Scala学习之数据类型和变量

scala变量修饰符

val:修饰的是不可变的变量,不可以重新赋值的-->值

var:修饰可变变量,可以重新赋值的 --> 变量

Java中修饰常量要用final,如果没有final的话一般都是可变的

注:scala建议全部定义为val的,除非你是业务需求,才允许把他定义成var

我们新创建一个Object

下面是var的演示

Scala学习之数据类型和变量

下面是val的演示

Scala学习之数据类型和变量

我们修改b的值

编译器会有错误提示

Scala学习之数据类型和变量

可以看到错误信息

Scala学习之数据类型和变量

这需要知道一个概念:变量类型推断

Scala学习之数据类型和变量

myVar 会被推断为 Int 类型,myVal 会被推断为 String 类型

上面是scala自动推断的类型,我们并不知道是那种数据类型,如果要声明数据类型呢?

val or var VariableName: DataType [=Initial Value or Expression]

val or var VariableName: DataType的意思是变量声明

Scala学习之数据类型和变量

[=Initial Value or Expression or _]三种初始化形式

Initial Value

Scala学习之数据类型和变量

Expression

Scala中表达式的返回值就是最后一行代码的执行结果


Scala学习之数据类型和变量

下面是Scala 支持的数据类型

Scala学习之数据类型和变量

相对于Java

并无基本类型与包装类型之分

整数类型

Scala的整数类型用于存放整数值,比如 5、18、96、167等等,根据长度不同整数类型又划分出四种类型:

Scala学习之数据类型和变量

Scala各整数类型有固定的表示范围和字段长度,不受具体操作系统的影响,以保证Scala程序的可移植性。


在程序中定义一个整型变量,如果没有指定,默认为Int类型,如果要定义Long类型,需要在后面加上“l”或者“L”,推荐用“L”。

Scala学习之数据类型和变量

最大值的获取方式:

这里有一种加s的输出方式

print(s"$a")输出为变量的值

println()打印时自动换行

Scala学习之数据类型和变量

如果定义一个整数超过了Int类型最大值,而不在后面加上“L”,编译会报错,这时需要加上“L”

Scala学习之数据类型和变量

浮点类型

Scala的浮点类型可以表示一个小数,比如 3.14f、7.8 、0.168等等,根据长度不同浮点类型又划分出两种类型:

Scala学习之数据类型和变量

与整数类型类似,Scala 浮点类型也有固定的表数范围和字段长度,不受具体操作系统的影响。Scala的浮点型常量默认为Double型,声明Float型常量,须后加“f”或“F”。通常情况下,应该使用Double型,因为它比Float型更精确(小数点后大致7位)

Scala学习之数据类型和变量

字符类型

字符类型可以表示单个字符,字符类型是Char,16位无符号Unicode字符(2个字节), 区间值为 U+0000 到 U+FFFF。

Scala学习之数据类型和变量

字符常量是用单引号(' ')括起来的单个字符,可以直接给Char赋一个整数,然后输出时,会按照对应的unicode码。

Scala学习之数据类型和变量

也可以输出unicode

Scala学习之数据类型和变量

在Scala中允许使用转义字符''来将其后的字符转变为特殊字符型常量;

Scala学习之数据类型和变量

布尔类型

布尔类型也叫Boolean类型,在Scala中,Boolean类型数据只允许取值true和false,占1个字节。

Scala学习之数据类型和变量

Boolean类型在程序中的作用一般是和逻辑运算结合在一起。

Scala学习之数据类型和变量

String字符串类型

Scala本身没有String类,它的字符串的类型实际上是java.lang.String,因此和Java中的一样,String是一个不可变的对象,所以该对象不可被修改。这就意味着你如果修改字符串就会产生一个新的字符串对象。

Scala学习之数据类型和变量

可以去除竖线

Scala学习之数据类型和变量

Unit类型、Null类型和Nothing类型

Scala学习之数据类型和变量

Unit类型用来标识过程,也就是没有明确返回值的函数,由此可见,Unit类似于Java里的void。Unit只有一个实例:(),这个实例也没有实质的意义。

Scala学习之数据类型和变量

Null类只有一个实例对象:null,类似于Java中的null引用。null可以赋值给任意引用类型(AnyRef),但是不能赋值给值类型(AnyVal: 比如 Int, Float,Char, Boolean,Long,Double,Byte,Short)。

Scala学习之数据类型和变量

Nothing,可以作为没有正常返回值的方法的返回类型,非常直观的告诉你这个方法不会正常返回,而且由于Nothing是其他任意类型的子类,在开发中可以将Nothing返回给任意变量或函数,在抛出异常方面应用较多。

Scala学习之数据类型和变量


分享到:


相關文章: