基础语法
输出语句:println():换行输出;print():不换行输出
基本数据类型:Byte、Short、Int、Char、Long、String、Boolean、Float、Double
定义变量/常量:var/val 变量名[:类型]=值 类型可以省略,Scala会自动推断
字符串插值表达式:s"${表达式}字符串" 类似于python中的格式化字符串,可以做拼接
惰性赋值:懒加载,希望长字符串只在运行的时候加载。lazy var/val
标识符:就是用来给变量,方法,类起名字的
标识符命名规则:
1.必须由数字和英文下划线和美元符号组成,数字不能开头
2.不能和Scala关键字重名
3.见名知其义
变量方法一般小驼峰命名法;类或特质大驼峰命名法;包域名反写以点分割
类型转换:
自动类型转换,不同基础类型参与计算时,会自动提升为较大的类型,和java一样
强制类型转换,范围大的类型强制转换为范围你较小的类型,需要满足条件
值类型和字符串的相互转换
值转字符串:1.拼接空字符串2.值.toString()
字符串转值:字符串.toXXX
运算符
算术运算符+ - * / % 没有++和-- ;/取商;+拼接字符串,支持隐式类型转换
赋值运算符 +=、-=、*=、/=、%=
关系运算符 >、<、<=、>=、!=、==
逻辑运算符&&、||、!
位运算符&、|、^、-、>>、<<
if语句可以代替三目运算符效果 s=if(条件判断) a else b
for循环:
for(i<-表达式、数组、集合+[if判断]){
//逻辑代码
}其中if判断为守卫,可以添加,让循环更简洁
val nums=1 to10 --to 是关键字
for(i <- nums) println("Hello, Scala! " + i)
for推导式
val v =for(i<- 1 to 10) yield i* 10
while循环
和java的while循环一致,不再赘述
do while循环
和java的while循环一致,不再赘述
break和continue
-
在scala中,类似Java和C++的break/continue关键字被移除了
-
如果一定要使用break/continue,就需要使用scala.util.control包下的Breaks类的breable和break方法。
-
breakable{
for(i <- 1 to 10) {
if(i == 5) break() else println(i)
}
}
方法
定义: def 方法名(参数:参数类类型,...):[return 类型] ={方法体}
惰性方法:在定义方法返回值变量的前面加上lazy,可以在方法返回值首次被调用的时候执行方法,使用java的懒加载实现
参数类型:
默认参数,指定参数默认值
带名参数,用key=value的形式指定
变长参数,变量类型后价格*号
方法调用方式
后缀调用法:
对象名.方法名(参数)
中缀调用法:
对象名 方法名 参数
花括号调用法:
对象名.方法名{参数} --必须只有一个参数
无括号调用法:
如果方法没有参数,可以省略方法名后面的括号
函数
定义:
val 函数变量名 = (参数名:参数类型, 参数名:参数类型....) => 函数体
方法和函数区别:
在scala中,函数是对象,方法是属于对象的,可以理解为,方法属于函数
使用下划线可以将方法转换为函数 val 函数名 = 方法名 _