一、变量定义
对比java说明
scala变量的定义分两个,一个是用val来定义,相当于java中是用final来定义变量,一旦定义,其中的值便不可修改;另外一个是用var来定义,相当于java中的非final变量,可修改。一般使用val定义,因为变量定义之后一般很少会去修改。如果你用val定义了一个对象,对象.属性还是可以修改的(前提是对象.属性是用var来定义的)
java变量定义方式:
String name = "zhangsan";
int age = 18;
对比java,scala的定义并不需要显性的指定变量类型,因为scala有类型推断的能力,可以推断出那些不显示指定的类型
scala类型定义为:val/var 变量名[:变量类型]=值(其中[]中的部分是可以省略的)
//val/var 变量名[:变量类型]=值
val name = "zhangsan"
var age = 18
scala编码中可以不用分号来结尾,编译器自动识别,但是如果多行代码合并成一行,还是需要用分号隔开的。
二、数据类型
scala 是完全面向对象的语言,所以没有原生的基本数据类型。 scala中的数字也是对象,可以调用方法 java中基本的数据类型有:byte,short,int,long,float,double,boolean,char scala中数据类型对应的为Byte,Short,Int,Long,Float,Double,Boolean,Char
scala中数据类型分为两大类AnyVal(值类型)和AnyRef(引用类型),这两种类型都是对象。
scala数据类型关系一览:
特别注意一下,在scala中Null也是一个对象,是引用类型的子。也就是说我们可以定义一个对象,其值为null
object Scala01_test0 {
/**
* @description:TODO
* @author :momo
* @date :2020/2/29 10:28 下午
*/
def main(args: Array[String]): Unit = {
var stu : Student = null
print(stu)
}
}
class Student {
var name = "zhangsan"
var age = 0
}
scala数据类型列表
数据类型 | 描述 |
---|---|
Byte | 8位有符号的补码整数,数值区间为 -128到127 |
Short | 16位有符号的补码整数,数值区间为:-32768 到 32767 |
Int | 32位有符号的补码整数,数值区间为:-2147483648 到 2147483647 |
Long | 64位有符号的补码整数,数值区间为:-9223372036854775808 到 9223372036854775807 |
Float | 32位IEEE 754标准的单精度浮点数 |
Double | 64位IEEE 754标准的双精度浮点数 |
Boolean | true,false |
Char | 16位无符号Unicode字符,区间值为U+0000到U+FFFF(0~65535) |
String | 字符序列,在java中为引用类型,在scala中为数值类型 |
Unit | 表示无值,相当于java中的void类型。只有一个实例,写为() |
Null | 有唯一实例null |
Nothing | Nothing是任何类型的子类 |
Any | Any是其他类型的超累 |
AnyRef | AnyRef是所有引用类型(reference class)的基类 |
AnyVal | AnyVal是所有值类型的基类 |
强制类型转换
scala中的强制类型转换不同于java中的强制类型转换,可以直接采用toXXX的方式来,如下:
val str : String = "10"
str.toInt
scala中类型转换很特殊,后面将会有单独的一章来讲隐式转换