1、进入scala:直接输入scala即可
2、退出:输入:quit或者:q都可以
3、输入变量一部分,按Tab键可补全可调用的方法名称
4、从技术上讲Scala并不是一个解释器,实际上是将读取的输入内容迅速的编译成字节码,然后交由Java虚拟机执行,也被称为REPL(读取-计算-打印-循环)
5、声明常量值使用val,如val a=10;(注:使用val定义的变量的值不允许再修改,否则会报error: reassignment to val的错误)
6、var 声明的变量值可改变
7、变量在定义时必须做初始化,否则会报错,而且同一行代码中有多条语句时需用分号;隔开
8、Scala有9种数值类型,Byte、Int、Long、String、Double、Char、Short、Float、Boolean,与Java不同的是Scala不区分值类型与引用类型,因为你可以对一个整型使用toString方法,如1.toString
9、基本数据类型转换:String在操作时可以被隐式转换成StringOps对象,通过StringOps对象给字符串添加了上百种操作,如:"hello".intersect("world")找出两个字符串中共同的字符、toString方法转换成字符串、toInt、toDouble转换成数字等方法
删除某个字符"hello".drop(2)输出llo,删掉了左边两个,dropRight(2)是删掉右边两个
"hello".filter(_!='l')输出heo,将l过滤掉了
10、val bulder = new StringBuilder;builder.append("hello")定义可变字符串
11、Scala运算符号与java不同的是Scala中的运算符是当做方法来使用的,如a+b是a.+(b)的简写
12、调用函数,先引入响应的包,如import scala.math._(_符号类似java中的*,是一个通配符操作)
13、在Scala中允许使用字符串乘以数字,如"abc"*3输出abcabcabc即输出了3遍abc,但是反过来数字乘以字符串是不允许的
14、scala 在线API:http://www.scala-lang.org/api/2.11.7
15、由于Scala中有类型推断的机制,所以定义变量时不用指定类型,如var x=1,如果想显示指定也可以,如var m:String="abc"
16、不同于Java,Scala在如var x,y=10定义变量时x、y都会赋值10,而java中只会给y赋值10
17、如图,x打印结果为Unit,原因在于赋值语句在scala中的返回值为Unit(跟Java中不同)
18、如图,Scala有隐式转化功能,点击7行前的图标可以看到Scala将String隐式转换成了StringOps,即toInt是StringOps的方法,所以在以后用到String时驶入某个方法没有定义,可以看下StringOps里面有没有定义,其实不止String,int、double等也都有对应的RichInt、RichDouble为其提供了很多方法可以调用
19、在Scala中操作符其实调用的都是方法,如1+2是1.+(2)的简写,而且在Scala中如果方法的参数只有1个,可以写成操作符的形式,如1 to 10、1 max 2等等
在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号。如 “0 to 2”,实际完整调用是 “0.to(2)”。但 “println(2)” 不能写成 “println 10“”,因为未写出方法调用的接收者 Console,所以可以写成 “Console println 10”