scala语言的介绍
scala是一门多范式的编程语言,即面对对象也是函数式编程(函数式编程:面对过程,编程函数)
scala语言和Java语言的对比
相同点:
Java和Scala可以无缝混编,都是基于jvm,都可以相互调用
不同点:
Scala类型可以自动推断,也可以写类型需要卸载变量名的后面
Scala定义是用val(定义常量),var(定义变量)定义
Scala支持函数式编程
构造器的不一样
Java中变量有默认值,Scala必须手动给默认值
Scala不需要分号,通过换行来判断是否这个语句结束
Scala中不需要get/set方法(底层已经实现)
Scala的懒加载
Scala中使用lazy关键字修饰变量,这结束惰性变量,实现延迟加载,惰性变量只能是常量
Scala的差之器
Scala中有三种差值器
1.在任何字符串前面加上s,就可以直接在字符串中使用变量
val name:String="cat"
println(s"she is name is ${name}")
2.f插值器
val height=1.23568
println(f"身高是${height}%.2f")
3.raw插值器:是输入字符串原样,不进行转义
例如:
//没有使用raw
println("a\nb\n\tc")
//使用的效果
println(raw"a\nb\n\tc")
Scala访问修饰符
private :一个类的内部可用
protected:自己类 子类也可以被访问(这个比java更加严格,java同一个包的其他类也可以访问)
public ::如果没有指定修饰符 ,这样的成员在任何地方都可以被访问
Scala的数据类型
Any是所有类型的超类型,也是顶级类型。Any有两个子类/;
AnyVal和AnyRefAnyVal代表值类型。有9个预定义的非空的值类型分别是:Double、Float、Long、Int、Short、Byte、Char、Unit和Boolean。
Unit是不带任何意义的值类型,它仅有一个实例可以像这样声明:()。所有的函数必须有返回,所以说有时候Unit也是有用的返回类型。AnyRef代表引用类型。所有非值类型都被定义为引用类型。
在Scala中,每个用户自定义的类型都是AnyRef的子类型。Null是所有引用类型的子类型(即AnyRef的任意子类型)。它有一个单例值由关键字null所定义。
Nothing是所有类型的子类型,也称为底部类型。没有一个值是Nothing类型的。