1. 变量的定义
注意: 在 scala 中没有 static 的概念, 在 object 这个关键字修饰的类中所有的方法和属性都是 static 的. 这里的 object 类叫做伴生类, 目前不涉及.
例:
- object Test01{
- def main(args: Array[String]): Unit = {
- // 使用 val 定义的变量是不可变的, 相当于 java 中的 final 修饰的
- val v1=1
- // 使用 var 定义的变量的值是可变的, 在 scala 中鼓励使用的是 val
- var v2=2
- // 在定义变量的时候, 也可以在变量名前提供类型, 如何不提供默认的是类型推断
- val v3:String ="zzy" // 自定义类型
- val v4="jj" // 类型推断
- }
- }
2.scala 的数据类型
scala 和 java 一样有 7 中数据类型: byte,char,short,int,long,float,double 和 boolean, 但是无包装类型, 还有 String.
例:
- object Test01 {
- def main(args: Array[String]): Unit = {
- val v1: Int = 1
- val v2: Double = 1.1
- val v3: Float = 1.1f
- val v4: Char = 'c'
- val v5: Boolean = true
- val v6: String = "zzy"
- val va7:String="""aaa \t\t0""" // 三个引号表示特殊字符不转义
- val va8: Byte = 0
- // 注意, 如果在上面确定变量的数据类型, 在下面则不能修改
- val value1=1
- value1="aaa" // 这里会报出语法错误
- }
- }
如以上的图所示:
Any: 是所有类的父类, 包括值类型 AnyVal 和引用类型 AnyRef
AnyVal : 是所有值类型的父类, 包括 Int,Double,Boolean,Unit 等等
AnyRef : 是所有引用类型的父类, 包括 Null
Null : 是所有引用类型的子类, Null 也只有一个实例, 是 null, 相当于 java 中的 null, 能赋值给任何引用类型变量, 不能赋值给值类型变量
Nothing : Nothing
Unit : 类型只有一个实例, 是(), 相当于 java 中的 void, 没有任何的实质意义(在定义方法的返回值的时候使用)
3.scala 的基本操作符
算数操作符:+ - */ %
关系运算符:>>= <= == !=
逻辑运算:&& || !
位运算:& | ^>> <<>>>
对象比较: 1==1 "zy"=="zy" (判断值相等)
4. 关键字
5. 控制流程语句
(1) 选择结构
- object Test01 {
- def main(args: Array[String]): Unit = {
- val v1=5
- // 有返回值的判断语句(if-else)
- val result1=if(v1>5)"true" else "false"
- // 返回值为 () 的判断语句(if-else if -else)
- val result2=if(v1>3) "true" else if(v1>5) "false" else ()
- }
- }
(2) 块表达式
- object Test01 {
- def main(args: Array[String]): Unit = {
- /**
- * 块中的最后一个表达式的值就是这个快的返回值.
- * 就算是赋值表达式, 也有返回值, 是空, Unit.
- */
- val x=5
- val y=10
- val result1={
- if(x>y){
- "true"
- }else{
- "false"
- }
- }
- val result2={
- 2+2
- }
- }
- }
(3) 循环语句
- for:
- object Test01 {
- def main(args: Array[String]): Unit = {
- //for 循环
- //1 to 10
- for(i<- 1 to 10){
- println(i) // 打印 1 ~ 10
- }
- //1 until 10
- for(i<- 1 until 10){
- println(i) // 打印 1 ~ 9
- }
- // 遍历可迭代对象
- val arrs=Array("aa","bb","cc")
- for(item <- arrs){
- println(item)
- }
- // 在遍历是对每一个元素进行操作
- var array:Array[Int]=Array(1,2,3,4)
- // 将数组中的每一个元素都 * 5
- val collect=for(i<- array) yield i*5
- }
- }
注意: to 和 until 也是可以有第二个参数的, 比如 1 to (10,3) 第二个参数表示步长
- while:
- var i=1
- while(i<=9){
- println(i)
- //i++ // 注意这两句话是错误的, 在 scala 中没有 ++ --
- i+=1
- }
来源: http://www.bubuko.com/infodetail-2901350.html