Scala基础语法
1、 值和变量
A)、声明变量:
var修饰的字段,是变量,内容和引用都可变
B)、声明常量:
val修饰的字段,是常量,内容可变引用不可变
val修饰的字段,相当于Java中final修饰的变量
注意:在val和var均可的条件下,官方推荐使用val
- 、var和var区别演示
进入scala操作界面
演示var修饰的变量特点:
var修饰字段引用可变
总结:var修饰字段内容可变
演示val修饰的常量特点:
val修饰字段引用不可变
Val修饰字段内容可变
1、lazy关键字:
只有val修饰的变量才能被lazy修饰;
当val被声明为lazy时,它的初始化将被推迟,直到我们首次对它取值
2. 常用类型
A)、Scala和Java一样,scala也是强类型语言
强类型语言:一旦一个变量被指定了某个数据类型,如果不经过强制类型转换,那么它就永远是这个数据类型。你不能把一个整形变量当成一个字符串来处理。
弱类型语言:数据类型可以被忽略,一个变量可以赋不同数据类型的值。
- 、scala中所有的值都有类型
Scala中AnyVal类型(非引用数据类型)
七个数值类型Byte、Char、Short、Int、Long、Float、Double
一个布尔类型Boolean
一个Unit类型(等价与java中的void)
Scala中AnyRef类型(引用数据类型)
集合、option(选项类型)、YorClass(自己定义的类)
Scala中比较特殊的两个类型:Nothing、Null(很少用到,要知道):
a、Nothing是所有类的子类(应用场景如下):
b、null是所有引用类的子类(应用场景如下):
注意:scala和Java不同的是,Scala没有基本类型与包装类型之分,这些类型都是类,有自己的属性和方法。
- scala 类型转换:
a、自动类型转换
案例1:将Long转Float类型
val x: Long = 987654321
val y: Float = x // 9.8765434E8 (note that some precision is lost in this case)
案例2:将Char转Int类型
val face: Char = '☺'
val number: Int = face // 9786
b、强制类型转换
案例1:将Long类型强制转换成Byte
var b:Long=a
b.toByte
案例2:将Long类型强制转换成String
3. 操作符
A)、Scala中没有操作符,只是以操作符的格式去进行方法调用。
//数学运算符 +、-、* 、/、% //关系操作符 > < >= <= != //逻辑操作符 && || //比较对象是否相等 == !=
注意:
1、a + b 等价于 a.+(b) 因为符号也是scala中的方法
2、Scala没有++,-- 可以用+=,-=代替
3、操作符都是方法的重载,“.”是方法的调用
B)、扩展:位运算符 (二进制:0:false 1:true)
1、如果指定 A = 60; 及 B = -13; 两个变量对应的二进制为:
A = 0011 1100 <<2 1111 0000
B = 0000 1101 >>2 0000 0011
2、运算符、描述、实例
& 按位与运算符 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符 (a | b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
(参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0)
~ 按位取反运算符 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<< 左移动运算符 a << 2 输出结果 240 ,二进制解释: 1111 0000
(将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0))
>> 右移动运算符 a >> 2 输出结果 15 ,二进制解释: 0000 1111
(将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃)
>>> 无符号右移 A >>>2 输出结果 15, 二进制解释: 0000 1111
(将一个数的各二进制位全部右移若干位,左补0,右边丢弃)
3、验证结果使用win10计算器