查看Java代码
仅赋值一次
fun main() {
var str: String = “Hello Kotlin”
println(str)
}
黄色提示:大致意思就是你的变量不会修改,可以使用 val 定义为不可变量变量,下面咱们看看
val 关键字
Kotlin 使用 val 关键字定义不可变变量,只能赋值一次的变量(类似Java中final修饰的变量),不是常量不能混淆呦。
语法
val <变量名> : <类型> = <初始化值>
实践
fun main() {
val age : Int = 100
println(age)
}
运行结果
“E:\Android\Android StudioO\jre\bin\java.exe”…
100
Process finished with exit code 0
查看Java代码
对不可变量进行再次赋值
提示:Val cannot be reassigned(Val 不能重新赋值)
内置数据类型(常用)
==========
| 类型 | 描述 |
| — | — |
| String | 字符串 |
| Char | 单字符 |
| Boolean | true/false |
| Int | 整形 |
| Double | 小数 |
| List | 集合 |
| Set | 无重复的元素集合 |
| Map | 键值对的集合 |
Kotlin的引用类型
===========
-
Java有两种数据类型:
-
引用类型(堆内存)
-
基本数据类型(栈内存)
-
Kotlin只提供引用类型这一种数据类型,出于更高性能的需要,Kotlin编译器会在Java字节码中修改为基本数据类型。
类型推断
====
对于已声明并赋值的变量,它允许你省略类型定义。
从上图你会发现 String 和 Int 都是灰色的。
提示:显式给定的类型在这里是多余的
移除掉显示的类型声明
实践
fun main() {
//类型推断
var type = “Hello Type”//自动推断为String
println(type)
var a = 10 //自动推断为Int
println(a)
var b = true //自动推断为Boolean
println(b)
var d :String //如果不在声明时初始化则必须提供变量类型
d = “HHH” //明确赋值
println(d)
}
运行结果
“E:\Android\Android StudioO\jre\bin\java.exe”…
Hello Type
10
true
HHH
Process finished with exit code 0
查看Java代码
编译时常量
=====
编译时常量只能在函数之外定义,为什么?
因为编译时常量必须在编译时赋值,而函数都是在运行时才调用,函数内的变量也是在运行时赋值。
编译时常量只能是常见的基本数据类型:String、 Int、Double、Float、Long.Short、Byte、Char、Boolean。
类似Java的public static final。
实践,如下:
const val MAX = 65535
fun main() {
println(MAX)
}
查看Java代码,如下:
“const"不适用于"局部变量”,如下:
延迟初始化lateinit
=============
-
使用lateinit关键字相当于做了一个约定:在用它之前负责初始化
-
执行islnitialized检查lateinit变量是否完成初始化
使用lateinit关键字
class UserInfo4() {
lateinit var name:String //属性延迟初始化
fun addName(_name:String){
name = _name
}
fun readName(){
//直接使用如果name未做初始化会报错。
println(name)
}
}
fun main() {
var userInfo4 = UserInfo4()
userInfo4.readName()
}
添加islnitialized检查
执行islnitialized检查lateinit变量是否完成初始化,未完成初始化则不执行打印。
惰性初始化by lazy
============
最后
以前一直是自己在网上东平西凑的找,找到的东西也是零零散散,很多时候都是看着看着就没了,时间浪费了,问题却还没得到解决,很让人抓狂。
后面我就自己整理了一套资料,还别说,真香!
资料有条理,有系统,还很全面,我不方便直接放出来,大家可以先看看有没有用得到的地方吧。
lazy
============
最后
以前一直是自己在网上东平西凑的找,找到的东西也是零零散散,很多时候都是看着看着就没了,时间浪费了,问题却还没得到解决,很让人抓狂。
后面我就自己整理了一套资料,还别说,真香!
资料有条理,有系统,还很全面,我不方便直接放出来,大家可以先看看有没有用得到的地方吧。
[外链图片转存中…(img-21hYSziK-1720109719943)]
[外链图片转存中…(img-bn1aMLcp-1720109719944)]
[外链图片转存中…(img-hFJG7NaO-1720109719944)]
[外链图片转存中…(img-GHqkbd9K-1720109719945)]
[外链图片转存中…(img-kAqODaf6-1720109719945)]
[外链图片转存中…(img-4PScEgKZ-1720109719946)]