首页 > 代码库 > scala 入门(01)
scala 入门(01)
大数据“火”的有段日子了,原来打算学习hadoop…… 后知道spark要比hadoop更牛, 故而转学spark。其原码为scala所写,为了更好的研究spark,故又开始学习scala.
将自己所学记录在此,不为点赞, 只为加深记忆,加深理解…不是都说写一遍等于读十遍嘛……
1、基本类型:
Byte 8位有符号补码整数
Short 16位有符号补码整数
Int 32位有符号补码整数
Long 64位有符号补码整数
Char 16位无符号Unicode字符
String char序列
Float 32位IEEE754单精度浮点数
Double 64位IEEE754双精度浮点数
Boolean true or false
如果熟悉Java,你后发现java的基本类型在scala中有同样的意思, 不同的是scala是首字母大写,这是由于scala 高度重用java类型的缘故(隐式转换)
2、变量定义:
scala 有两种变量:val 及 var。
val 类似与java中的final ,一旦初始化,就不能再被赋值。
var 则类似java中的非final变量,在它的生命周期中可以被多次赋值。
在java中,各种类型是固定的, int型是int型, String 是 String, 是什么类型就是什么类型,除非显示转换。
而Scala 中在定义变量时可以之用val 及 var ,因为其有类型推断的能力。
如: val msg = "123", 则Scala解释器自动推断类型为String;
val msg = 123 则为Int;
另外Scala中写明类型标注,这样可以确保编译器使用自己想要的类型, 其与java中不同之处在于 Scala的变量类型写在其名称之后,中间用冒号分隔,如:
val msg :java.lang.String = "123";
也可以写成
val msg : String = "123";
3、函数定义:
Scala中函数定义用 def 关键字,然后是函数名称。如:
def max(x : Int, y : Int) : Int = {
if(x>y)
x;
else
y;
}
上列中:max为函数名, x,y为参数,类型为Int型, 最后一个Int标识函数返回值类型,{}中部分为方法体;
Scala与java一个 重要的区别是返回值, 在java中必须显式的用return 关键字,但在Scala中可以用显示的用return标识返回类型, 也可省略,这时最后执行的一行就为返回值。 Scala中返回值类型可以不加编译器可以自动推断它,但递归函数必须加。
java中函数没有返回值时用void ,scala中则为Unit。
4、数组(Array)
scala中数组定义如下:
val greetStrings = new Array[String](5);
此句表达式定义了一个 名为greetStrings,类型为String,初始长度为5的数组;
与java不同的是在使用数组中元素时 scale用圆括号,java用方括号。如:
Java: greetString[0] = “hello”;
Scala: greetString(0) = “hello”;
5、控制结构:
1) if表达式
scala 与其它语言的不同之外在于 scala的if 是可以有返回值的。如:
val res =
if(!args.isEmpty) args(0);
else "default";
其它用法同其它语言一样
2) while表达式:
与其它语言基本相同。
3) for 表达式:
用法如下
for(arg <- args) {
Println(arg);
}
4) foreach
args.foreach(arg => println(arg)); 由于此时没写明arg的类型, 由解释器自动推断
亦可明确元素类型,如:
args.foreach((arg : String) => println(arg));
今天就先进行到这里了, 明天继续…
scala 入门(01)