当前位置: 首页 > news >正文

【1、Kotlin 基础语法】2、Kotlin 变量

1、注释

  • Kotlin每行语句可以加分号,也可以不加分号
  • Kotlin有三种注释:类注释/方法注释、单行注释、多行注释(可以嵌套)
/*** 类注释、方法注释*/
fun main(args: Array<String>) {// 单行注释println("Hello World!");/*多行注释*/println("Program arguments: ${args.joinToString()}")/*第一层块注释/*第二层块注释/*第三层快注释这种注释方式在java中是不支持的,但是在kotlin中是支持的。算是一个亮点吧(貌似意义不大)。*/*/*/println("123")
}

2、变量

  • Kotlin中一切都是对象,都是引用类型,没有像Java的基本数据类型,但是最终编译器会生成基本数据类型

2-1、变量定义

  • 声明变量类型 + 初始化赋值
fun main(args: Array<String>) {// 显式指定变量类型var num1 : Int = 12// 不指定变量类型,编译器会自动进行类型推导var num2 = 23// 先声明类型再初始化var num3 : Intnum3 = 20println(num3)// 报错,变量必须被指定类型或者初始化// This variable must either have a type annotation or be initializedvar num4;// 此句会报错var num5 : Int// 报错,仅仅声明类型,没有初始化,编译器也会报错,Variable 'num5' must be initializedprintln(num5)
}

2-2、类型推导

  • 声明时数据类型和初始化至少给定一个,或者两者都声明,否则编译器报错
// 仅初始化,类型推导
var a = "aaaa"
val b = true// 仅声明类型
var c:String
val d:Int// 类型和初始化都声明
var e : Int = 12
val f : String = "abc"// 以下代码会编译报错 This variable must either have a type annotation or be initialized
var g
g = 12
val h
h = 12// 这里不报错
var g : String
// 报错 Variable 'g' must be initialized
println(g)

2-3、var可变变量 vs val不可变变量

  • var(来自variable),可变引用。这种变量的值可以被改变。这种声明对应的是普通(非final)的Java变量。
    var a:Int = 12a = 20var b:String = "hello"b = "world"println(a) // 20println(b) // world
  • var 关键字允许变量改变自己的值,但它的类型却是改变不了的。
    // 报错 Kotlin: Type mismatch: inferred type is String but Int was expectedvar answer = 42answer = "no answer"
  • var 声明的变量在声明之后初始化,需要显式的指定类型,不然报错
    // var 声明的变量在声明之后初始化,需要显式低指定类型,不然报错// 以下写法报错var aa = 12// 这样写才行var b: Intb = 12
  • val (来自value) ,不可变引用。使用 val 声明的变量不能在初始化之后再次赋值。它对应的是 Java的 final变量。
    // 报错,Kotlin: Val cannot be reassignedval a = 12a = 20
  • 尽管val引用自身是不可变的,但是它指向的对象可能是可变的。
    val languages = arrayListOf ("Java")languages.add("Kotlin")

2-4、const 和 val 的区别

特性**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">val</font>**
****(只读变量)
**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">const val</font>**
****(编译时常量)
初始化时机运行时初始化编译时初始化
存储位置内存中分配存储空间直接内联到字节码中
值类型可以是任意表达式/函数返回值必须是基本类型或字符串字面量
作用域可声明在任何地方只能声明在顶层或对象声明中
访问方式通过引用访问直接替换为字面值
注解使用❌ 不能在注解中使用✅ 可在注解中使用
  • 示例
// 编译时常量
const val PI = 3.14
val  a = System.currentTimeMillis()fun main(args: Array<String>) {// Kotlin: Modifier 'const' is not applicable to 'local variable'.// 报错 const编译时常量不能放在函数内部,函数内只在函数调用时才赋值
//    const val PI = 3.14println(PI)println(a)
}
http://www.dtcms.com/a/411383.html

相关文章:

  • TorchV知识库安全解决方案:基于智能环境感知的动态权限控制
  • 网站后台演示2023小规模企业所得税税率是多少
  • 常见设计模式讲解
  • 怎么查网站备案服务商房地产新闻动态
  • php做网站主题建设项目一次公示网站
  • 同城外卖系统技术解析:SpringBoot如何赋能区域外卖突围战
  • .NET Framework 4.0.30319:官方下载与常见问题解决指南
  • 池州网站优化有没有网站做字体变形
  • 【论文阅读 | ICCV 2025 | M-SpecGene:面向 RGBT 多光谱视觉的通用基础模型​​】
  • 江苏省省建设厅网站公司的介绍怎么写
  • 专门做二手手机的网站吗网站建设 协议书 doc
  • Kubernetes Headless Service 深度解析 —— 用大白话讲清楚
  • 做网站的软件pageseo策略
  • 怀化冰山涯IT网站建设公司电子商务网站开发背景和意义
  • 免费设立网站企业对比网站
  • j2ee 建设简单网站数据分析师要学什么
  • LeetCode 1023.驼峰式匹配
  • LeetCode:62.N皇后
  • 专业制作银行存单贵州网站建设seo
  • 企业建立网站需要百度一下下载安装
  • 南京企业网站seo模板网站如何做优化
  • W55MH32 的 TLS 硬件加密功能说明
  • 有什么网站可以做充值任务建设模板网站报价
  • 网站建设开发多少钱帮别人设计网站的网站
  • LeetCode刷题记录----62.不同路径(Medium)
  • 免费网站安全检测柚段子wordpress
  • 请解释Android Framework的工作方式及原理,并详细说明Activity生成View的机制
  • 精彩网站制作微分销系统是什么
  • 深圳百度seo代理北京中文seo
  • 网站编辑做啥都页面设计在哪