Scala基础

1.变量和数据类型

1.1 变量

1.1.1 scala中有类型自动推断的功能,也就是定义变量的时候不需要指定类型

var 类型定义的变量的是可变的,val类型定义的变量是不可变的,
 var age = 18
age="tom"//错误 scala中的变量类型确定之后不能再修改了

     var num1 = 10   // 可变

     val num2 = 20   // 不可变

重新赋值: 

        num1 = 30  // 正确

        //num2 = 100  //错误,因为num2是val修饰的

反编译后查看num1和num2发现不可变的根本因为num2是用final修饰的

    private int num1;

    private final int num2;

 

1.1.2 var和val修饰对象的时候,var修饰的对象的引用是可变的,val修饰的对象的引用是不可变的,但是他们的值都是可变的

// p1是var修饰的,p1的属性可以变,而且p1本身也可以变

        var p1 = new Person()

        p1.name = "dalian"

        p1 = null

 

        // p2是val修饰的,则p2的属性可以变,但是p2本身不可变(即p2的内存地址不能变)

        val p2 = new Person()

        p2.name="xiaolian"

//        p2 = null // 错误的,因为p2是val修饰的

 

1.2 数据类型

  1.  scala中有值类型和引用类型,null类型是所有引用类型的子类,
  2. 常见数据类型和java一致
  3. scala中低精度向高精度转换时和java一致,会隐式转换
  4. nothing类型是所有数据类型的子类,如果一个函数没有返回值可以用nothing
  5. unit是函数类型,stringops是

1.2.1 常见数据类型

 整型:

数据类型

描述

Byte [1]

8位有符号补码整数。数值区间为 -128 到 127

Short [2]

16位有符号补码整数。数值区间为 -32768 到 32767

Int [4]

32位有符号补码整数。数值区间为 -2147483648 到 2147483647

Long [8]

64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807 = 2的(64-1)次方-1

byte类型最小-128,最大127

        // 正确

        var n1:Byte = 127

        var n2:Byte = -128

 

        // 错误

        // var n3:Byte = 128

        // var n4:Byte = -129

 

声明long类型的时候需要显示指定,比如

val a=10L  //如果不指定就是int类型,所以这里需要注意

原文地址:https://www.cnblogs.com/javazyh/p/12986966.html