Scala入门02——Scala数据类型

Scala数据类型

Scala的数据类型基本与Java一致,并且没有基本数据类型,而是直接使用其包装类型,因此,Scala和Java内存类型布局一致,精度一致

在scala是可以对数字等基础类型调用方法的

因此,Scala和Java内存类型布局一致,精度一致

数据类型 描述
Byte 8bit(1字节)有符号数字,范围在-128 到 127
Short 16bit(2字节)有符号数字,范围在-32768 到 32767
Int 32bit(4字节)有符号数字,范围在-2147483648 到 2147483647
Long 64bit(8字节)有符号数字,范围在-9223372036854775808 到 9223372036854775807
Float 32bit(4字节),IEEE 754标准的单精度浮点数
Double 64bit(4字节),IEEE 754标准的双精度浮点数
Char 16bit Unicode字符,范围在U+0000 到 U+FFFF
String 字符串
Boolean 布尔类型
Unit 表示无值,和Java中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()
Null 空值或空引用,唯一实例是null,AnyRef的子类
Nothing Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型,表示没有值,没有实例
Option 表示可能存在(Some),可能不存在(None)的值
None Option的两个子类之一,用于安全的函数返回值,比Null安全
Some Option的两个子类之一,表示包装了值
Any 所有其他类的超类
AnyRef 所有引用类(reference class)的超类
AnyVal 所有值类型的超类
Nil 长度为0的List

Scala字符串

定义多行字符串

在Scala中,单行字符串的定义方式和Java中完全相同,不过,Scala还拥有类似于Python的多行字符串定义方式,用三双引号表示即可

1
2
3
4
5
6
7
8
9
scala> val str = """
| hello
| world
| """
str: String =
"
hello
world
"

s字符串

1
2
3
4
5
scala> val name = "Tom"
name: String = Tom

scala> println(s"my name is $name")
my name is Tom
1
2
3
4
5
6
7
8
scala> val name = "Tom"
name: String = Tom

scala> val age = 10
age: Int = 10

scala> println(s"两年后,${name}${age + 2}岁啦")
两年后,Tom12岁啦

raw字符串

raw字符串可以使\n这些转义字符被作为普通字符串

1
2
scala> println(raw"\nhello")
\nhello

定义变量

定义变量分valvar两种关键字:val关键字声明的是常量,一旦声明不能修改;var关键字声明的是变量

在Scala当中,鼓励尽量使用val

1
2
val name : String = "Tom"
val age = 20 // 类型推断

定义函数(初探)

在Scala当中定义函数使用def关键字,定义函数并不会直接计算出其结果,而需要等待调用的那一刻

1
2
3
4
5
6
7
8
scala> val v1 = 1
v1: Int = 1

scala> val v2 = 3
v2: Int = 3

scala> def v3 = v1 + v2
v3: Int

定义函数也可以使用如下写法

1
2
scala> def v4() = v1 + v2
v4: ()Int

区别:

在Scala当中,如果函数没有参数,则可以不用书写(),在调用时,也是直接书写函数名即可

调用函数(初探)

1
2
scala> v3
res13: Int = 4

1
2
scala> v4()
res15: Int = 4