【Kotlin初学者】变量-常量-数据类型

查看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

============

最后

以前一直是自己在网上东平西凑的找,找到的东西也是零零散散,很多时候都是看着看着就没了,时间浪费了,问题却还没得到解决,很让人抓狂。

后面我就自己整理了一套资料,还别说,真香!

资料有条理,有系统,还很全面,我不方便直接放出来,大家可以先看看有没有用得到的地方吧。

系列教程图片

2020Android复习资料汇总.png

flutter

NDK

设计思想开源框架

微信小程序

lazy

============

最后

以前一直是自己在网上东平西凑的找,找到的东西也是零零散散,很多时候都是看着看着就没了,时间浪费了,问题却还没得到解决,很让人抓狂。

后面我就自己整理了一套资料,还别说,真香!

资料有条理,有系统,还很全面,我不方便直接放出来,大家可以先看看有没有用得到的地方吧。

[外链图片转存中…(img-21hYSziK-1720109719943)]

[外链图片转存中…(img-bn1aMLcp-1720109719944)]

[外链图片转存中…(img-hFJG7NaO-1720109719944)]

[外链图片转存中…(img-GHqkbd9K-1720109719945)]

[外链图片转存中…(img-kAqODaf6-1720109719945)]

[外链图片转存中…(img-4PScEgKZ-1720109719946)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值