首页 > 代码库 > 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  32IEEE754单精度浮点数

  Double  64IEEE754双精度浮点数

  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标识函数返回值类型,{}中部分为方法体;

  Scalajava一个 重要的区别是返回值, 在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 与其它语言的不同之外在于 scalaif 是可以有返回值的。如:

    val res =

       if(!args.isEmpty)  args(0);

       else "default";

    其它用法同其它语言一样

 

  2) while表达式:

    与其它语言基本相同。

 

  3) for 表达式:

    用法如下

    forarg <- args) {

      Println(arg);

    }

  4) foreach

    args.foreach(arg => println(arg));   由于此时没写明arg的类型, 由解释器自动推断

    亦可明确元素类型,如:

      args.foreach((arg : String) => println(arg));

 

  今天就先进行到这里了, 明天继续…

 

 

scala 入门(01)