Scala数据类型
Scala和Java相同的数据类型
-
Byte 8bit的有符号数字,范围在-128 ~ 127
-
Short 16 bit有符号数字,范围在-32768 ~ 32767
-
Int 32 bit有符号数字,范围-2147483648到2147483647
-
Long 64 bit有符号数字,范围-9223372036854775808到9223372036854775807
-
Float 32 bit IEEE 754单精度浮点数
-
Double 64 bit IEEE 754双精度浮点数
-
Char 16 bit Unicode字符.范围U+0000到∪+FFFF
-
String字符串
-
Boolean 布尔类型
-
Null 空值或空的引用
Scala独有的数据类型
- Unit表示无值,和其他语言中void等同
- Nothing所有其他类型的子类型,表示没有值(防止空指针的用法)
- Any所有类型的超类,任何实例都属于Any类型(Object之下有Any,一人之下万人之上)
- AnyRef所有引用类型(String,自定义的对象等)的超类
- AnyVal所有值类型(Short,Byte,Int,Long)的超类
变量和常量的声明
声明一个变量:var,可修改
声明一个常量:val,不可修改
var name = “zhangsan”
println(name)
name =“lisi”
println(name)
val gender = “m”
再让gender="n"
error: reassignment to val
类和对象
在scala中每行后面不需要加分号,直接通过换行如来区分。但是一行中写了多个语句,语句与语句之间必须用分号来分割。
在scala里面,类和对象使用object和class来修饰。
- 凡是定义在Object程序块中的属性(包括字段和方法)都是静态的(类似于Java中的static),所以main函数写在Object块中。
- 凡是定义在class代码块里的都是动态的。
object Scala01 {
}
class Scala01 {
}
Object修饰scala01我们称为Scala01的伴生对象
Class修饰scala01我们称为Scala01的伴生类
伴生对象+伴生类=Java中的某一个类
创建类
类的构造函数由以下三个参数构成的
当参数用var修饰,那么可以直接通过对象来修改其值
当参数用val修饰,无法通过对象来修改值
当参数没有修饰,那么外部无法通过对象来调用。。。
class Person(var id:Int, var name:String){
var fcp = 0.0
def sayName(myName:String) = {
println("myName: " + myName)
}
/**
* 重写的构造函数,参数不能有修饰符
*/
def this(id1:Int,name1:String,facePower1:Double) {
this(id1,name1)
fcp = facePower1
}
val height = 188
}