码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Scala基础篇--变量与常量


    目录

    一、变量和常量的定义

    1.1、数据中的定义

    1.2、Java中的定义

    1.3、Scala中的定义

    二、声明规则

    三、示例


    一、变量和常量的定义

    1.1、数据中的定义

            大家最先接触变量和常量,应该在学习函数的时候,因此我们先来看一下数据中对二者的定义。

            变量:在某一变化过程中,数值发生变化的量称为变量。变量分为自变量和因变量,亦称函数。

            常量:在某一变化过程中,数值始终不变的量称为常量。

    1.2、Java中的定义

            变量类型 变量名称 = 初始值        int a = 10

            final 常量类型 常量名称 = 初始值    final int b = 20

            在Java中常量是特殊的变量,一旦赋值就不可变。 

    1.3、Scala中的定义

            var 变量名 [: 类型] = 初始值     var i:Int = 10 

            val 常量名 [: 类型] = 初始值     val j:Int = 20

            其中,类型可以省略,var是变量variable的简写,val是值value的简写,从定义时就将二者区分开来。

            在Scala中能用常量的地方不用变量,更符合函数编程的思想。

    二、声明规则

        ( 1 )声明变量时,类型可以省略,编译器自动推导,即类型推导
        ( 2 )类型确定后,就不能修改,说明 Scala 是强数据类型语言。
        ( 3 )变量声明时,必须要有初始值
        ( 4 )在声明 / 定义一个变量时,可以使用 var 或者 val 来修饰, var 修饰的变量可改变,val 修饰的变量不可改。

    三、示例

    def main(args: Array[String]): Unit = {
    // ( 1 )声明变量时,类型可以省略,编译器自动推导,即类型推导
    var age = 18
    age = 30
    // ( 2 )类型确定后,就不能修改,说明 Scala 是强数据类型语言。
    // age = "tom" // 错误
    // ( 3 )变量声明时,必须要有初始值
    // var name // 错误
    // ( 4 )在声明 / 定义一个变量时,可以使用 var 或者 val 来修饰, var 修饰
    的变量可改变, val 修饰的变量不可改。
    var num1 = 10 // 可变
    val num2 = 20 // 不可变
    num1 = 30 // 正确
    //num2 = 100 //错误,因为 num2 是 val 修饰的
    }

             var 修饰的对象引用可以改变,val 修饰的对象则不可改变,但对象的状态(值)

    却是可以改变的。
    object TestVar {
    def main(args: Array[String]): Unit = {
    // p1 是 var 修饰的,p1 的属性可以变,而且 p1 本身也可以变
    var p1 = new Person()
    p1.name = "dalang"
    p1 = null
    // p2 是 val 修饰的,那么 p2 本身就不可变(即 p2 的内存地址不能变),但是,p2 的属性是可以变,因为属性并没有用 val 修饰。
    val p2 = new Person()
    p2.name="jinlian"
    // p2 = null // 错误的,因为 p2 是 val 修饰的
    }
    }
    class Person{
    var name : String = "jinlian"
    }

    参考资料:014_尚硅谷_Scala_变量和数据类型(二)_变量和常量_哔哩哔哩_bilibili

  • 相关阅读:
    【编程题】【Scratch四级】2022.06 成绩查询
    java的Integer中也会有缓存
    亚洲小姐全球总冠军吴丹,《猎枭生死线》荧幕初吻超越柳岩徐冬冬
    吴恩达机器学习课程笔记1-2
    【DR_CAN-MPC学习笔记】3.一个详细的建模例子
    Chrome代码分析(二)——EscapeAnalysisPhase
    广告牌安全传感器怎么用?为城市能起到什么效果?
    HarmonyOS—@Observed装饰器和@ObjectLink嵌套类对象属性变化
    【rar密码】WinRAR整理密码,如何使用?
    SpringBoot 快速入门(保姆级详细教程)
  • 原文地址:https://blog.csdn.net/Flychuer/article/details/126452321
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号