Scala基础语法之变量+Scala数据类型

目录

 

变量

Scala类型体系

数值类型(Numeric types):

Boolean类型:

Char类型:

Unit:

Null:

Nothing:

String

 


变量

三种变量修饰符:

  1. val  定义immutable variable  常量;
  2. var  定义mutable variable  变量;
  3. lazy val  定义惰性求值的常量;

scala可以不显示指定变量的类型,因为Scala会自动进行类型推导;

 

Scala基础语法之变量+Scala数据类型_第1张图片

x+x自动对结果进行了类型推导,并自动命名res(result的缩写),0代表自动命名的编号。分析结果是Int类型。

 

 

Scala基础语法之变量+Scala数据类型_第2张图片

直接引用res0,对res0这个表达式进行求值,而res0这个表达式是没有变量名的,所以系统又自动命名表达式的结果为res1;

 

由val定义的常量值是不能该改变的。如果想要修改,只能用var来修饰变量名。

 

结果的变量名是res2,当然也可以为表达式指定变量名r;

 

Scala基础语法之变量+Scala数据类型_第3张图片

当变量用var定义时,其值是可以被修改的。

 

Scala基础语法之变量+Scala数据类型_第4张图片Scala基础语法之变量+Scala数据类型_第5张图片

被lazy val修饰的变量,在定义时时不会被求值的,只会给出一个的标记。只有当lazy val 在第一次被应用的时候scala会自动对lazy val的表达式进行求值。

什么时候需要定义lazy val?

只有到在后续程序中可能不需要用到的变量,我们可以定义为lazy val。只有当lazy val第一次被应用到时候才会被求值,而val、var在定义时就直接被求值。

 

Scala类型体系

scala语言中所有的事物都是对象,这是scala的类型层级关系图。

Scala基础语法之变量+Scala数据类型_第6张图片

 

数值类型(Numeric types):

Byte(1个字节)、Short(2个字节)、Int(4个字节)、Long(8个字节)、Float、Double。

像Java一样低精度向高精度赋值时不需要进行数值转换。

 

Scala基础语法之变量+Scala数据类型_第7张图片

注意类型的首字母一定要大写

 

Scala基础语法之变量+Scala数据类型_第8张图片

低精度向高精度赋值时不需要转化,而高精度向低精度赋值时就会报错出现“type mismatch'”(类型不匹配的错误)。

 

Boolean类型:

true(真)、false(假)

Scala基础语法之变量+Scala数据类型_第9张图片

在定义Boolean类型时,不用表明变量的类型,系统会自动识别变量的类型,且在定义时,值的首字母不能大写

 

Char类型:

字母、符号

Scala基础语法之变量+Scala数据类型_第10张图片

赋值时双引号""代表赋的值为String类型,单引号''代表赋的值是字符类型。不用表明变量的类型。

 

Unit:

空类型

在函数式编程中Unit常常作为函数的返回值类型出现。Unit作为返回值返回时常常表示函数只有副作用的。因为函数不返回任何的值。

Scala基础语法之变量+Scala数据类型_第11张图片

不用表明变量的类型。

 

 

Null:

表示一个引用类型,它的值是空,和Java中的语义是一样的。但在Scala语言中一般不使用Null,一般使用object。

 

Nothing:

表示程序异常终止。

对于程序而言如果返回值是Nothing就说明程序发生了异常。

定义一个函数foo为直接抛出一个异常,那foo的返回结果就是Noting。

 

String

构建以Java的String之上

新增了字符串插值(interpolation)的特性

 

Scala基础语法之变量+Scala数据类型_第12张图片

与shell语言中对变量的引用相同  ${} 

 

 

 

 

你可能感兴趣的:(Scala语言)