栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

学习大数据的第15天——了解scala的第一天(scala概述、标识符、变量常量的定义、字符串操作、键盘录入、文件写入和读出以及数据类型)

学习大数据的第15天——了解scala的第一天(scala概述、标识符、变量常量的定义、字符串操作、键盘录入、文件写入和读出以及数据类型)

学习大数据的第15天——今天好奇scala语言,就花了一天去了解了一点,因为今天是自习,把明天上课要讲的对象预习了,然后就去看scala了哈哈哈

那我们今天就总结一下今天学习的scala知识点

什么是Scala

以我的了解来说,就是比java更加的体现出面向对象,众所周知,Java是一门面向对象的编程,但是Java中有些并没有真正意义上的面向对象,正是所谓"万物皆可为对象,想new几个是几个"嘿嘿,而scala还有一些函数式编程的概念
Scala概述
1.1、scala编译结果的反编译深入了解
使用 java HelloScala
无法编译,因为java中没有scala中的类库
java.lang.NoClassDefFoundError
使用反编译器发现,反编译后的scala文件实现了真正面向对象(万物皆对象) HelloScala类静态方法用对象来进行表示(单例设计模式)HelloScala认为是伴生对象的伴生类,HelloScala$为伴生类的伴生对象

如何使用java来编译scala文件呢?
java -cp %SCALA_HOME/lib/scala-library.jar; HelloScala
输入:C:UsersstuDesktop>java -cp %SCALA_HOME%/lib/scala-library.jar; HelloScala
输出Hello scala

首先学习一个语言要有准备工作,先学习怎么配置scala环境,在idea安装scala插件以及类库资源包(方便以后学习类库中的类方法带来方便)

配置环境其实跟java差不多,可以参考一下的视频进行安装:
点击观看尚硅谷视频(scala环境配置)

类库资源包的下载链接也给你们吧(我下的是2.12.11版本的):

类库资源包链接

下完之后再idea内配置一下就行

编写第一个scala文件(当然还是我们的老朋友HelloWorld)
//编写含有静态变量的方法
class Student(name: String, age: Int) {
  def PrintInfo(): Unit = {
    println("学生姓名:" + name + ",学生年龄:" + age + ",院校:" + Student.school)
  }

  //重写父类的toString()方法
  override def toString: String = {
    val str: String = "学生姓名:" + name + ",学生年龄:" + age + ",院校:" + Student.school
    return str
  }
}

//Student的伴生对象
object Student {
  //  val school = "shujia"
  val school: String = "数加学院"
}



object HelloWorld {
  
  def main(args: Array[String]): Unit = {
    println("hello world")
    //定义一个Student对象
    val stu = new Student("姚龙", 18)
    stu.PrintInfo()
    println(stu.toString)
  }
}
标识符
object IdentifierDemo1 {
  def main(agrs: Array[String]): Unit = {
    //1、以字符或者下划线开头,后接字母、数字、下划线
    val hello: String = ""
    var Hello123: String = ""
    val _abc = 123

    //错误:not found: value -
    //    val h-b = ""
    //    val h-b = ""
    //    val 123abc = 123

//    以操作数开头,且只包含操作符(+-* /#!)
## 标题
    val *# = "hello"
    println(*#)
    //3、用反引号'.....'包括的任意字符串,即便是Scala关键字也可以
    //反引号  `...`

//    var if = "if"

    var `if` = "if"
    println(`if`)

  }
}
变量和常量的定义
class Student2(name: String, var age: Int) {
  def printIofo(): Unit = {
    println("学生姓名:" + name + ",学生年龄:" + age)
  }
}

object VariableDemo1 {
  def main(args: Array[String]): Unit = {
    //定义一个变量
    var num: Int = 20
    println(num)
    //定义一个常量
    val num1: Int = 10;
    println(num1)

    //    (1)声明变量时,可以不屑数据类型,编译器可以自动推导,即类型推导
    var a = 10
    val b = 20
    //    (2)类型确认后就不能更改,说明scala是一门强数据类型语言
    //编译错误,类型不匹配
    //    a = "你好"
    //    (3)变量声明时,必须要有初始值
    //    var c: Int
    //    (4)用var修饰的变量可以更改,用val修饰的变量不能更改
    a = 21
    //被val修饰的变量为常量,不能被修改
    //    b = 21

    val stu = new Student2("姚龙", 18)
    //    stu = new Student2("尚志恒",20)
    //    stu = null
    stu.printIofo()

    stu.age = 10
    stu.printIofo()

    //    var stu = new Student2("姚龙",18)
    //    stu = new Student2("尚志恒",20)
  }
}
字符串操作
object StringDemo {
  def main(args: Array[String]): Unit = {
    val name = "姚龙"
    val age = 18

    println(name + "在数加学习,今年" + age)

    /
object ScannerDemo1 {
  def main(args: Array[String]): Unit = {
    println("请输入你的大名:")
    val name = StdIn.readLine()
    println("请输入你的年龄:")
    val age = StdIn.readInt()

    println(s"你的大名是${name},你的年龄是${age}")
  }
}
文件的写入和读出
import java.io.{File, PrintWriter}
import scala.io.Source

object FileIODemo1 {
  def main(args: Array[String]): Unit = {
    //1、从文件中读取数据
    //Source.fromFile文件的路径 将文件读出来
    //再通过foreach将文件打印出来
    //可以直接copy绝对路径,也可以编写相对路径,相对路径从src开始就行了
    Source.fromFile("src/main/resources/FileIoDemo1.txt").foreach(print)

    //2、将数据写入文件  java中拥有可以直接写入文件的方法,直接调用java的方法即可
    val writer = new PrintWriter(new File("src/main/resources/output.txt"))
    writer.write("hello scala from java writer")
    writer.close()
  }
}
数据类型

数据类型:
1、scala中一切数据都是对象,都是Any的子类
2、Scala中数据类型分为两大类:
数值类型(AnyVal)、引用类型(AnyRef),不管是值类型还是引用类型都是对象
3、Scala数据类型仍然遵守,低精度的值类型向高精度的值类型自动转换(隐式转换)
4、Scala中的StringOps是对Java中的String增强
5、Unit:对应Java中的void,用于方法返回值的位置,表示方法没有返回值,Unit是一个数据类型,只有一个对象
就是().Void不是数据类型,只是一个关键字
6、Null是一个类型,只有一个对象就是null,它是所有引用类型(AnyRef)的子类。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711700.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号