基础语法类型:
数据类型:
概述:
1.在Java中,基本类型、static等都不符合面向对象的规则。Scala作为一门完全面向对象的语言,不支持基本数据类型、static等
2.在Scala中,提供了公共父类:Any,即所有的类都是Any的子类
2.1 Any下分为了两个大的子类:AnyVal(任意数值)和AnyRef(任意引用)。无论AnyVal还是AnyRef都是类
2.2 AnyVal包含了常用地数据类型
2.2.1 例如:Byte,Short,Int,Long, Float,Double,Char,Boolean
2.2.2 Unit:对应了Java中地void。当一个函数没有返回值的时候,返回值类型就是unit。unit只包含了一个对象,就是()
2.2.3 String:字符串,是对Java中的String类的增强
2.3 除了AnyVal以外的其他的类都是AnyRef的子类
2.3.1 AnyRef包含Scala中的类和Java中的类
2.3.2 AnyRef中提供了特殊子类:Null。Null是任意AnyRef类的子类。Null只有一个值就是Null。
3.不同于Java的地方在于,Scala中还提供了公共子类:Nothing,即所有的类都是Nothing的父类
4.在Scala中,整数默认为Int,小数默认为Double。
类型转换:
1.和Java相比,在Scala中,数据类型转换也分为隐式和显式
2.所有的强制类型转换需要通过toXXX函数来转换
// 显式转换
val a = 5L
val c: Int = a.toInt
println(c)
val x = 5.38
val y = x.toFloat
println(y)
运算符:
1.Scala中提供了五大类运算符:算术、赋值、比较、逻辑、位
2.需要注意的是,Scala中没有提供三元运算符
3.Scala中没有自增和自减运算
4.Scala中还不支持连等定义和连等赋值
var x = 5
// 错误写法
x += x -= 3
5.在Scala中,没有基本类型的说法,所有的数据都是对象,因此所有的运算符本质上都是函数
val x = 3
val y = 5
// 所有的运算符本质上都是函数
val r1 = x.+(y)
println(r1)
// 调用函数的时候,.可以省略不屑
val r2 = x + (y)
println(r2)
// 当调用函数中只有一个参数的时候,可以省略()不屑
val r3 = x + y
println(r3)