【scala】scala变量定义和数据类型

  • Post author:
  • Post category:其他




一、变量定义

对比java说明

scala变量的定义分两个,一个是用val来定义,相当于java中是用final来定义变量,一旦定义,其中的值便不可修改;另外一个是用var来定义,相当于java中的非final变量,可修改。一般使用val定义,因为变量定义之后一般很少会去修改。如果你用val定义了一个对象,对象.属性还是可以修改的(前提是对象.属性是用var来定义的)

java变量定义方式:

String name = "zhangsan";
int age = 18;

对比java,scala的定义并不需要显性的指定变量类型,因为scala有类型推断的能力,可以推断出那些不显示指定的类型

scala类型定义为:val/var 变量名[:变量类型]=值(其中[]中的部分是可以省略的)

//val/var 变量名[:变量类型]=值
val name = "zhangsan"
var age = 18

scala编码中可以不用分号来结尾,编译器自动识别,但是如果多行代码合并成一行,还是需要用分号隔开的。



二、数据类型

scala 是完全面向对象的语言,所以没有原生的基本数据类型。 scala中的数字也是对象,可以调用方法 java中基本的数据类型有:byte,short,int,long,float,double,boolean,char scala中数据类型对应的为Byte,Short,Int,Long,Float,Double,Boolean,Char

scala中数据类型分为两大类AnyVal(值类型)和AnyRef(引用类型),这两种类型都是对象。


scala数据类型关系一览:

在这里插入图片描述

特别注意一下,在scala中Null也是一个对象,是引用类型的子。也就是说我们可以定义一个对象,其值为null

object Scala01_test0 {
  /**
   * @description:TODO
   * @author :momo
   * @date :2020/2/29 10:28 下午
   */
  def main(args: Array[String]): Unit = {
    var stu : Student = null
   print(stu)
  }
}
class Student {
  var name  = "zhangsan"
  var age  = 0
}

scala数据类型列表

数据类型 描述
Byte 8位有符号的补码整数,数值区间为 -128到127
Short 16位有符号的补码整数,数值区间为:-32768 到 32767
Int 32位有符号的补码整数,数值区间为:-2147483648 到 2147483647
Long 64位有符号的补码整数,数值区间为:-9223372036854775808 到 9223372036854775807
Float 32位IEEE 754标准的单精度浮点数
Double 64位IEEE 754标准的双精度浮点数
Boolean true,false
Char 16位无符号Unicode字符,区间值为U+0000到U+FFFF(0~65535)
String 字符序列,在java中为引用类型,在scala中为数值类型
Unit 表示无值,相当于java中的void类型。只有一个实例,写为()
Null 有唯一实例null
Nothing Nothing是任何类型的子类
Any Any是其他类型的超累
AnyRef AnyRef是所有引用类型(reference class)的基类
AnyVal AnyVal是所有值类型的基类


强制类型转换


scala中的强制类型转换不同于java中的强制类型转换,可以直接采用toXXX的方式来,如下:

    val str : String = "10"
    str.toInt

scala中类型转换很特殊,后面将会有单独的一章来讲隐式转换



版权声明:本文为weixin_36840967原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。