Scala之Scala基础

雨燕双飞 提交于 2020-11-17 05:50:41

1. 声明变量

使用 var 或者 val 声明变量。

注意:

      (1) val 修饰的变量是不可变的,注意不可变的不是内容,而是引用;

      (2) var 修饰的变量,内容和引用都可变;

      (3) 使用 lazy 定义变量后,只有在调用该变量时才会实例化这个变量的值。而且惰性变量只能是不可变变量;

      (4) 只有 val 修饰的变量才能被 lazy 修饰;

      (5) Scala 语言是弱类型语言。

//变量定义方式
var a:Int = 1
var aa = 1
val aaa:Int = 3
val aaaa = 4
lazy val aaaaa = 4

2. 常用类型

Scala 和 Java 一样,有7种数值类型 Byte、Char、Short、Int、Long、Float、Double 和一个 Boolean 类型,和 Java 不同的是 ,Scala 没有基本类型与包装类型之分,这些类型都是类,有自己的属性和方法。

1.toString()

1.to (10)

scala类型层级关系:

scala 类型转换:

3. 操作符

Scala 中没有操作符,只是以操作符的格式去进行方法调用。

//数学运算符
+、-、* 、/、%
//关系操作符
> < >= <= !
//位操作符
| & ^ ~
//比较对象是否相等
== !=

注意:

      (1) a + b 等价于 a.+(b)

      (2) Scala 没有++,-- 可以用 +=,-= 代替

4. 条件表达式

表达式的思考方式:以表达式为中心的编程思想

      (1) 表达式和语句的区别:表达式有返回值,语句被执行。表达式一般是一个语句块,执行后,返回一个值;

      (2) 不使用 return 语句,最后一个表达式即返回值。

if/else 表达式有值,这个值就是跟在 if 或者 else 之后的表达式的值

object ConditionDemo {
  def main(args: Array[String]){
    var x = 1
    //将if/else表达式值赋给变量y
    val y = if (x > 0 ) 1 else -1
    println(y)

    //支持混合型表达式
    val z = if(x>0) "success"  else  -1
    println(z)

    //如果缺失else,相当于if(x>2) 1 else ()
    val m = if(x>2) 1
    println(m)

    //在scala中,每个表达式都有值,scala中有个unit类,写作(),相当于Java中的 void
    val n = if(x>2) 1 else ()
    println(n)

    //if 嵌套
    val  k= if(x<0) 0 else if (x>=1) 1 else -1
    println(k)

  }

执行结果: 
1
successs
()
()
1

Scala 的的条件表达式比较简洁,例如:

注意:

      (1) 每个表达式都有一个类型;

      (2) 条件表达式有值;

      (3) Scala 没有 switch 语句。

5. 块表达式

object BlockExpressionDemo {
  def main(args: Array[String]){

    var x = 0

    //在scala中,{}中可以包含一系列表达式,块中最后一个表达式的值就是块的值
    val res = {
      if (x < 0) {
        -1
      } else if (x >= 1) {
        1
      } else {
        "error"
      }
    }
      println(res)

      val x0 = 1
      val y0 = 1
      val x1 = 2
      val y1 = 2
      val distance = {
        val dx = x1 - x0
        val dy = y1 - y0
        Math.sqrt(dx*dx+dy*dy)
      }
      println(distance)

    //块语句,最后一句是赋值语句,值是unit类型的

     var res2 = {
       val dx = x1 - x0
       val dy = y1 - y0
      val res =  Math.sqrt(dx*dx+dy*dy)
     }
    println(res2)
    
  }

}
执行结果
error
1.4142135623730951
()

注意:

      (1) 块表达式的值是最后一个表达式的值;

      (2) 赋值语句的值是 unit 类型的。

6. 循环

在 Scala 中有 for 循环和 while 循环,用 for 循环比较多

for 循环语法结构:for (i <- 表达式/数组/集合)

while (条件语句){表达式}

do { 表达式 } while()

object ForDemo 
  def main(args: Array[String]){
    //每次循环将区间的一个值赋给i
    for( i <- 1 to 10)
      println(i)

    //for i <-数组
    val arr = Array("a", "b", "c")
    for( i <- arr)
      println(i)

    val s = "hello"
    for(i <- 0 until s.length){
      println(s(i))
    }

    //高级for循环
    for(i <- 1 to 3 ; j<- 1 to 3 if i != j)
      print((10*i + j) + "")
      println()

    //for推导式,如果for循环的循环体以yeild开始,则该循环会构建出一个集合或者数组,每次迭代生成其中的一个值。
    val v= for ( i <- 1 to 10 )yield i*10
            println (v)
  }
}

本文为原创文章,如果对你有一点点的帮助,别忘了点赞哦!比心!如需转载,请注明出处,谢谢!

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!