1. 基础语法
Scala 语言是基于 Java 虚拟机运行的,所以基本的语法和 Java 是没有区别的。但是为了简化 Java 的开发以及融合其他的编程语言的优点和特性, Scala 在基本的语法上做了大量的修改和优化,让程序员开发起来更简单,方便,灵活。
2 标识符
- 首字符为字母,后续字符任意字母和数字, 美元符号,可后接下划线_(可以包括特殊字符)
- 首字符为特殊字符,后续字符必须都是特殊字符。
object Scala01_Label {
def main(args:Array[String]): Unit = {
val ++ = 20
println(++)
val +-*/ = 10 // + 就是标识符的名称
println("数据为:" + +-*/)
}
}
运行结果:
20
数据为:10
Process finished with exit code 0
- Scala可以允许关键字(保留字)为标识符
但是前提必须要有反引号`
val `true` = 30
println(`true`)
我们来看看反编译后我们程序的样子:(jd-gui工具):
4. 有些保留字不能作为标识符 ,比如yield。
val `yield` = 1
3 变量
val定义的变量是不可变的 var是可变的。看我的另一篇博客
4 常用类型
4.1AnyVal:任意值类型
unit代表空返回值不是返回null,是返回一个()
4.2 AnyRef:任意的引用类型
String作为集合类型 Scala Collections存在于AnyRef下。
Null:
- 表示不存在的内存地址。
- 与引用类型相关。
- Null类只有一个对象null关键字。
- 任意引用类型的子类。
/*
赋给String可以 是AnyRef子类
但是不能赋给Int类型,不属于AnyVal
*/
//val i:Int = null
val s:String = null
4.3 Nothing
- 任意类的子类
- 不是用来赋值的。
- 代表没有正常的返回类型,没有返回类型。
Unit也代表返回类型 () 是正常的返回类型。
5 算数操作符重载
val i1 = 10
val i2 = 20
println(10+20)
println(i1+i2)
println(i1.+(i2))
反编译字节码:
操作符重载用法:
val nums = 5.to(10)
println(nums)
val num1s = 5 to 10
println(num1s)
运行结果:
Range(5, 6, 7, 8, 9, 10)
Range(5, 6, 7, 8, 9, 10)
Scala没有++ – 操作,需要+= -=
//++ -- 在Scala中不存在,替代它的是 += -=
var i = 10
i += 10
println(i)
6 调用函数和方法
- 函数不一定有必须属于的对象,方法必须属于某个对象。
- 调用方法,非静态方法,使用对象调用