1. val 常量 2. var 变量
注意点:
1. 声名变量时,类型可以省略,编译器自动推导,即类型推导
2. 类型确定后就不能修改,Scala是一个强类型语言
3. 声名变量时,必须有初始值
4. 在声名/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的常量不可改变
5. var修饰的对象引用可以改变,val修饰的对象则不可改变,但对象的状态(值)却是可以改变的
Scala 对各种变量、方法、函数等命名时使用的字符序列称为标识符。即:凡是自己可
以起名字的地方都叫标识符。
1)命名规则
Scala 中的标识符声明,基本和 Java 是一致的,但是细节上会有所变化,有以下三种规
则:
(1)以字母或者下划线开头,后接字母、数字、下划线
(2)以 *** 作符开头,且只包含 *** 作符(+ - * / # !等)
(3)用反引号....包括的任意字符串,即使是 Scala 关键字(39 个)也可以
• package, import, class, object, trait, extends, with, type, for • private, protected, abstract, sealed, final, implicit, lazy, override • try, catch, finally, throw • if, else, match, case, do, while, for, return, yield • def, val, var • this, super • new • true, false, null数据类型
-
Scala中一切数据都是对象,都是Any的子类
-
Scala中数据类型分为两大类型
- 数值类型
AnyVal - 引用类型
AnyRef
- 数值类型
-
Scala数据类型仍然遵守,低精度的值类型向高精度值类型,自动转换(低精度->高精度)
-
Scala中的StringOps是对Java中String增强
-
Unit:对应Java中的void,用于方法返回值的位置,表示方法没有返回值.Unit是一个数据类型,只有一个对象就是().void不是数据类型,只是一个关键字
-
Null是一个类型,只有一个对象就是null.它是所有引用类型(AnyRef)的子类.
-
Nothing,是所有数据类型的子类,主要用于一个函数没有明确的返回值时使用.因为这样我们可以把抛出的返回值,返回给任何的变量或者函数
-
Scala中一切数据都是对象,都是Any的子类
- Byte
Byte[1] 8位有符号补码整数.数值区间为 -128 到127 (2的8次方 对其在对称轴上进行分割 分为 -128 到127)
127:在补码中用(-128)代替了(-0),所以补码的表示范围为: (-1280127)共256个.
-1-127的结果应该是-128,在用补码运算的结果中, [1000 0000]补 就是-128。但是注意因为实际上是使用以前的-0的补码来表示-128, 所以-128并没有原码和反码表示。(对-128的补码表示[1000 0000]补算出来的原码是[0000 0000]原, 这是不正确的) - Short
Short[2] 16位有符号补码整数.数值区间位-32768到32767(2的16次方) - Int
Int[4] 32位有符号补码整数.数值区间为-2147483648到 214748 - Long (l|L)
Long[8] 64 位有符号补码整数。数值区间为 -9223372036854775808 到
9223372036854775807 = 2 的(64-1)次方-1
- Float
Float[4] 32位,IEEE 754 标准的单精度浮点数 - Double
Double[8] 67位IEEE 754 标准的双精度浮点数
-
Char
(1)字符常量是用单引号 ' ' 括起来的单个字符。 (2)t :一个制表位,实现对齐的功能 (3)n :换行符 (4)\ :表示 (5)" :表示"
-
Boolean类型占一个字节
(1)布尔类型也叫 Boolean 类型,Booolean 类型数据只允许取值 true 和 false (2)boolean 类型占 1 个字节。
- Unit
表示无值,等同于 void,用作不返回任何结果的方法的结果类型,Unit只有一个实例值,写成().
Unit 类型用来标识过程,也就是没有明确返回值的函数。 - Null
null,Null类型只有一个实例值null
Null 类只有一个实例对象,Null 类似于 Java 中的 null 引用。Null 可以赋值给任意引用类型(AnyRef),但是不能赋值给值类型(AnyVal) - Nothing
Nothing类型在Scala的类层级最低端;他是任何其他类型的子类型.当一个函数.我们没有正常的返回值,可以用Nothing来指定返回类型,这样有一个好处,就是沃恩可以把返回的值(异常)赋给其他的函数或者变量(兼容性)
Nothing,可以作为没有正常返回值的方法的返回类型,非常直观的告诉你这个方法不会正常返回,而且由于 Nothing 是其他任意类型的子类,他还能跟要求返回值的方法兼容。
object Test01_Variable { def main(args: Array[String]): Unit = { //声名一个变量的通用语法 var a:Int = 10 //声名变量时类型可以省略,编译器自动推导,即类型推导 var a1 = 10 val b1 = 11 //类型在定义之后就不能修改修改(Scala是一个强数据类型的语言) var a2 = 15 //a2 类型为int //声名变量时,必须要有初始值 var a3:Int = 111 //在声名或定义一个变量时,可以使用var或者val来修饰,var修饰的变量可以改变,val修饰的变量不可改. } }
object Test02_Identifier { def main(args: Array[String]): Unit = { //以字母或者下划线开头,后接数字,字母,下划线 val hello: String = "" var Hello123 = "" val _abc = 123 //val h-b = "" //以 *** 作符开头,且只包含 *** 作符(+ - * / # !等) var -+/ = "" println(-+/) } }
object Test07_DataType { def main(args: Array[String]): Unit = { //1.整数类型 val a1: Byte = 127 val a2: Byte = -128 val a3 = 23153121556156165L // 默认整数类型为Int val b1: Byte = 10 val b2: Byte = 10 + 20 - 100 println(b2) val b3 = b1 + 20 println(b3) val b4: Byte = (b1 + 20).toByte println(b4) //浮点类型 val f1: Float = 1.262f //字符类型 val v1: Char = 'a' println(v1) val v2: Char = '9' println(v2) val v3: Char = 't' val v4: Char = 'n' println("abc" + v3 + "efg" + v4 + "hij") //转义字符 val c5 = '\' // \表示 val c6 = '"' // "表示 " println("abc" + c5 + "efg" + c6 + "hij") //字符变量底层保存ASCII码 val i1: Int = v1 val i2: Int = v2 println(s"i1:${i1}") println(s"i2:${i2}") val c7: Char = (i1 + 1).toChar println(s"c7:${c7}") val c8: Char = (i2 + 1).toChar println(s"c8:${c8}") //布尔类型 val t1: Boolean = true val t2 = true println(t1) println(t2) //空类型(Unit,Null,Nothing) //Unit def m1(): Unit = { println("111") } val q = m1() println(q) //空引用 //val r1:Int = null //值类型无法接收null val student = new Student("sada", 20) //student = null println(student) //Nothing def h1(n: Int): Int = { if (n == 0) { throw new NullPointerException } else return n //返回为空 因为定义为Nothing 所以就不会有返回值 } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)