一、数据类型
1.数值类型
- Float:32 位, IEEE 754 标准的单精度浮点数
- Double:64 位 IEEE 754 标准的双精度浮点数
- Byte:8位有符号补码整数。数值区间为 -128 到 127
- Short:16位有符号补码整数。数值区间为 -32768 到 32767
- Int:32位有符号补码整数。数值区间为 -2147483648 到 2147483647
- Long:64位有符号补码整数。数值区间为 -9223372036854775808 到9223372036854775807
2. 字符类型和字符串类型
- 字符类型用Char,符号用单引号
例:定义一个字符myChar,给其赋初值a
val myChar:Char = 'a'
- 字符串类型用String,符号用双引号
例:定义一个字符串myString,给其赋初值hello world
val myString: String = "hello world”
拓展:
- String对象是不可变的,如果你需要创建一个可以修改的字符串,可以使用StringBuilder类,实例如下:
def main(args: Array[String]): Unit =
{ val Buf= new StringBuilder
Buf++="awef"
Buf++="abc"
Buf+='a'
Buf ++="efgh"
Buf ++="efghasdwfewfe"
println("Buf is "+Buf)
}
- 可以使用length() 方法来获取字符串长度
val len=Buf.length()
- 字符串连接
- 可以使用concat()方法来连接两个字符串
- 可以使用“+” 来连接两个字符串
定义两个字符串
val string1:String = "hello"
val string2:String = “world"
(1) 用concat() 方法来连接string1和string2
string1.concat(string2)
(2) 用”+“连接string1和string2
val string3=string1+string2
3. Unint类型
Unint类型相当于Java中的void类型,表示无值。用作不返回任何结果的方法的结果类型。
Unint只有一个实例,写成().
例:
scala> var f=()
f: Unit = ()
4. Nothing类
Nothing类型在Scala的类层级的最底端;它是任何其他类型的子类型。
5. 布尔类型
Boolean类型:他的值有两种:true或false
注:scala的这些数据类型都是“类”,并且都是包scala的成员,比如Int的全名是scala.Int
二、声明值和变量
1.使用var声明变量
- 是可变的,声明的时候需要对其进行初始化,初始化以后还可以对其再次进行赋值
- 变量的类型在变量名之后 等号之前申明,如果没有指明数据类型的情况下,可自动推测出其数据类型,但是变量必须要给出其初始值,否则会报错
#声明变量的时候给变量声明其数据类型
var myVar : String = "Foo" #声明一个变量,变量名为myVar,初始值为Foo,变量类型为String
var myVar1 : String ="Too" #声明一个变量,变量名为myVar1,初始值为Too
myVar = "Moo" #更改变量myVar的值为Moo
#声明变量时也可以不声明变量的数据类型,scala会自动推断其数据类型
scala> var myVar2 = "hello"
myVar2: String = hello #scala自动推断其数据类型为String
scala> var myVar3 = 12
myVar3: Int = 12 #scala自动推断其数据类型为Int
#声明了变量,但是没有给其附初始值,结果报错
scala> var myVar4 : String
<console>:11: error: only classes can have declared but undefined members
(Note that variables need to be initialized to be defined)
var myVar4 : String
2. 使用val声明常量
- 是不可变的,在声明时就必须被初始化,而且初始化以后就不能在赋值
- 常的类型在常量名之后 等号之前申明,如果没有指明数据类型的情况下,scala可自动推测出其数据类型,但是常量必须要给出其初始值,否则会报错
scala> val myVar : String = "Foo" #定义了产量产量之后不可在修改。
myVar: String = Foo
scala> myVar = "Moo" #修改产量myVar,报错,因为常量一旦初始化之后就不能再修改
<console>:12: error: reassignment to val
myVar = "Moo"
^
#定义常量,没有给其附初始数据类型,scala自动推断其数据类型
scala> var myVar1 = 12
myVar1: Int = 12 #scala推断其数值类型为Int
scala> var myVar2 = false
myVar2: Boolean = false #scala推断其数值类型为Boolean
3. Scala支持多个变量,常量的声明
scala> val xmax,ymax,mmax,nmax =100 # 常量xmax, ymax,mmax,nmax 都声明为100
xmax: Int = 100
ymax: Int = 100
mmax: Int = 100
nmax: Int = 100
scala> var xmax,ymax,mmax,nmax =100 #变量 xmax, ymax,mmax,nmax 都声明为100
xmax: Int = 100
ymax: Int = 100
mmax: Int = 100
nmax: Int = 100