Scala 基于 JVM、引入函数式编程
.scala文件 -> .scala.class字节码文件 -> JVM -> 硬件
JDK1.8 SCALA需要配置环境变量
object(声明的对象,伴生对象(跟对应入口的伴生类.class)(跟对应入口的所属类$.class))
var 变量名 [: 变量类型] = 初始值 var i:Int = 10
var 变量名 [: 常量类型] = 初始值 var i:Int = 20
注意:能用常量的地方不用变量
标识符命名规则:
(1)以字母或者下划线开头,后接字母了、数字、下划线
(2)以操作符开头,且只包含操作符(±*/#!等)
(3)用反引号‘…’包括的任意字符串,即使是Scala关键字(39个)也可以
字符串输出:
(1)字符串,通过+号连接
(2)printf用法:字符串,通过%传值
(3)字符串模板(插值字符串):通过$获取变量值
键盘输入:
import scala.io.StdIn
Scala数据类型:
(1)Scala中一切数据都是对象,都是Any的子类
(2)Scala中数据类型分为两大类:数值类型(AnyVal)、引用类型(AnyRef),不管是值类型还是引用类型都是对象
(3)Scala数据类型仍遵守低精度的值像高精度值类型自动转换
(4)Scala中的StringOps是对Java中的String增强
(5)Unit:对应Java中的void,用于方法返回值的位置,表示方法没有返回值。Unit是一个数据类型,只有一个对象就是0。Void不是数据类型,只是一个关键字
(6)Null是一个类型,只有一个对象就是null。它是所有引用类型(AnyRef)的子类。
(7)Nothing,是所有数据类型的子类,主要用在一个函数没有明确返回值时使用,因为这样我们可以把抛出的返回值,返回给任何的变量或者函数。
整型:
(Byte[1] Short[2] Int[4] Long[8])[*]字节 // val num: Long = 123456789L
字符类型:
val c1: Char = ‘"’ // c1就是 "
Boolean类型:
0或1
Unit类型
:表示无值,与void等同,用作不返回任何结果的方法的结果类型
Null类型:
null,Null类型只有一个实例值null
Nothing类型:
是所有数据类型的子类,主要用在一个函数没有明确返回值时使用,因为这样我们可以把抛出的返回值,返回给任何的变量或者函数(兼容性)
自动类型转换:
(1)自动提升原则:有多种类型的数据混合运算时,自动向高精度的类型转换。
(2)把精度大的数值赋值给精度小的数值类型时,就会报错,反之就会进行自动类型转换。
(3)(byte,short)和char之间不会相互自动转换
(4)byte,short,char三者可以计算,在计算时会转换为int类型
强制类型转换:
val num: Int = 2.5.toInt (to数值类型)
优先向最近的精度转换才不会报错
- 涵义: 正号 | 加号 | 字符串相加(“Hello” + “world”)
逻辑运算符:
记 A 为 true,B 为false
&& (A && B) == false
|| (A || B) == true
! !(A && B) == true
赋值运算符:
C = A+B; 将A+B的值赋值给C
+= C +=1 将C+1赋值给C
-= C -= 1 将C-1赋值给C
*= C = 1 将C1赋值给C
/= C /= 1 将C/1赋值给C
%= C %= 1 将C%1赋值给C
<<= C <<= 2 等于 C = C<< 2
= C >>= 2 等于 C = C>>2
&= C &= 2 等于 C = C & 2
^= C ^= 2 等于 C = C^2
|= C |= 2 等于 C =C | 2
记 a 为 60,b 为 13
& (a & b) == 12 按位与运算符
| (a | b) == 61 按位或运算符
^ (a ^ b) == 49 按位异或运算符
~ (a ~ b) == -61 按位取反运算符
<< (a << 2) ==240 左移动算符
(a >> 2) == 15 右移动运算符
(a >>> 2) ==15 无符号右移