scala 学习第2弹 说说常量val与变量var,Scala数据类型

本文深入探讨Scala中的`val`常量和`var`变量。`val`修饰的值类型不可修改,引用类型下,引用本身不可变但其内容可变。相比之下,`var`变量可改变。提倡在不需要变动的情况下优先使用`val`以提高代码可读性和利于垃圾回收。此外,Scala中的`lazy`关键字仅适用于`val`,确保在需要时才初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 val:常量,相当于Java中的fimal关键字

1. 当val修饰值类型时,不可修改

 

2.当val修饰引用类型,引用不可变,但是引用的内容可以改变

 

var:变量,可以改变

 

注意点:

1.优先使用val(在无需改变时),有利于代码的可读性和垃圾回收

2.lazy关键字只针对val,表示需要使用的时候才进行赋值,用于不确定的初始化工作

3. scala能自动进行变量的类型推断,但它与Java,C等语言一样是静态类型语言

object s2_scalaVal {
  def main(args: Array[String]): Unit = {
    // 变量定义
    var v1 = 1
    var v2: Int = 2

    // 常量定义 val修饰的基本数据类型,在scala中称为值类型,其值不可以修改
    val v3 = 1 // 相当于final修饰
    val v4: Double = 2.0

    // v3 = 4 报错

    println(v1 + v2 + v3 + v4)

    // val 修饰的引用类型,引用不可变,引用的内容可变
    val a1 = Array(1, 2, 3)
    val a2 = Array(4, 5, 6)

    // a1 = a2 不可以,引用不可变
    a1(0) = 10 // 可以,内容可以变
    println(sum(a1))

    // val 可以使用lazy修饰,在需要使用的时候才会赋值
    lazy val lazy1 = 256
    println(lazy1) // 使用时会赋值


    // forLoop
    var a = 0
    // for 循环
    /*
    * for( var x <- Range ){
   statement(s);
}*/
    for (a <- 1 to 10) {
      print(a + " ");
    }
    println()


  }

  // 注意函数的写法
  /*
  * def functionName ([参数列表]) : [return type] = {
   function body
   return [expr]
}*/
  def sum(array: Array[Int]): Int = {
    var res = 0
    for (elem <- array) {
      // forEach 循环
      res += elem
    }
    return res
  }


}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值