Scala—— 1.变量

Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。Scala源代码(.scala)会被编译成Java字节码(.class),然后运行在JVM上,并可以调用现有的Java类库,实现两种语言的无缝对接。Scala单作为一门编程语言来看,非常简洁高效。

变量声明基本语法
var | val 变量名 [: 变量类型] = 变量值

声明变量时,类型可以省略(编译器自动推导, 即类型推导), 类型确定后,就不能修改,说明Scala是强数据类型语言, 在声明/定义一个变量时,可以使用var或val来修饰,var修饰的变量可以改变,val修饰的变量不可改变,val修饰的变量在编译后,等同于加上final,var 修饰的对象引用可以改变,val修饰的则不可改变,但对象的状态(值)却是可以改变的(比如: 自定义对象、数组、集合等),变量声明时,需要初始值。Scala与Java有着相同的数据类型,在Scala中数据类型都是对象,也就是说Scala没有Java中的原生类型。Scala数据类型分为两大类 AnyVal(值类型)和AnyRef(引用类型),注意不管是AnyVal还是AnyRef都是对象

根类型Any是所有类的父类,Scala中一切皆为对象, AnyVal(值类型)和AnyRef(引用类型),它们都是Any的子类Null类型是Scala的特别类型,它只有一个值null,它是bottom class,是所有AnyRef类型的子类Nothing类型也是bottom class,它是所有类的子类,在开发中通常可以将Nothing类型的值返回给任意变量或者函数,这里抛出异常使用很多

 def function: Nothing = {
    throw new Exception("exception")
  }

低精度的值,向高精度的值自动转换(implicit conversion)隐式转换

1.整型(Int和Long)

Scala各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证Scala程序的可移植性。整型常量/字面量默认为Int类型,声明Long类型常量/字面量时,须后加“l”或者“L”。

2.浮点(Double和Floa)

Scala浮点类型也有固定的表数范围和字段长度,不受具体OS的影响。 Scala的浮点类型常量默认为Double类型,声明Float类型常量时,须后加“f”或者“F”。

3.字符(Char)

单引号 ’ 括起来的单个字符,转义字符 ‘’ ,Char变量可赋整数,输出会按照对应的Unicode字符输出, Char类型是可进行运算,相当于一个整数,因为它都对应有Unicode码。

4.布尔(Boolean)

5.Unit类型

类似于Java里的void。

6.Null类

只有一个实例对象值null,null可以赋值给任意引用类型AnyRef,但是不能赋值给值类型AnyVal。
Nothing类

7.可作为没有正常返回值的方法的返回类型

8.强制类型转换

val num1: Int = 10 * 3.6.toInt + 6 * 1.5.toInt            
val s1 = a1 + "" 
val s2 = "23"
val num1 = s2.toInt
val num2 = s2.toByte
val num3 = s2.toDouble
val num4 = s2.toLong

确保String类型能够转成有效的数据,比如我们可以把"123", 转成一个整数,但是不能把"Hello"转成一个整数。

val s1 = "5.21"
println(s1.toInt) // error
println(s1.toDouble) //  ok

9.变量标识符的命名规则

首字符为字母,后续字符任意字母和数字,美元符号,可后接下划线_。 数字不可开头操作符(比如=-*/)不能在标识符中间和最后,用反引号’…'包括的任意字符,即使是关键字(scala有39个关键字)也可以做标识符。

首字符为操作符(比如+ - * / ),后续字符也需跟操作符 ,至少一个

val ++ = "hello,world!"
println(++)
 
val -+*/ = 90 //ok
println("res=" + -+*/)
var `true` = "hello,scala!"
println("内容=" + `true`)
 
val Int = 99.78
println("Int=" + Int)

10. Scala的关键字(39个)

package, import, class, object, trait, extends, with, type, forSome
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
————Blueicex 2020/2/15 18:06 [email protected]

发布了55 篇原创文章 · 获赞 0 · 访问量 1963

猜你喜欢

转载自blog.csdn.net/blueicex2017/article/details/104331297