kotlin中类型检查和类型转换
2024-10-06 15:24:14
is 和!is操作符,可以在运行时检查一个对象与一个给定的类型是否一致,或者使用与它相反的!is操作符
fun main(arg: Array<String>) { var a :Any= 1
if (a is String) {
print("是String")
}
if (a is Int) {
print("是Int")
}
}
智能类型的转换
fun main(arg: Array<String>) { demo("5") var x :Any = "a"
when(x){
is Int-> print(x+1)
is String-> print(x.length+1)
is IntArray-> print(x.sum())
}
}
fun demo(x:Any){
if (x is String){
print(x.length)//x 被自动转换为String类型
}
} //智能转换的前提条件:
// 1.局部的val变量:永远有效
// 2.val属性:如果属性是private的或者internal的或者类型检查处理与属性定义出现在同一个模块内,那么智能类型转换时有效的.对于opnefire属性,活存在自定义get方法
// 智能转换类型是无效的
// 3.局部的var变量:如果在类型检查语句与变量使用语句直接,变量没有被改变,而且它没有被lambda表达式捕获并在lambda表达式内修改它,那么智能类型转换时有效的
// 4.var属性:永远无效
强制类型转换
fun main(arg: Array<String>) {
var x :Any = "a"
val i = x as Int
print(i)
}
如果类型强制转换,而且类型不兼容,那么会抛类型转换异常,这是不安全的,不安全的类型转换使用中辍操作符as
为了避免抛异常.可以使用as? ,当类型转换失败时候回返回null,不再抛异常
最新文章
- asp.net后台注册js的四种方法
- [Aaronyang] 写给自己的WPF4.5 笔记19[Visual类图文并茂讲解]
- C# RSA PEM解密字符
- 夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)
- HDU 2151 Worm
- SQL语言笔记
- Default route and zero route
- 7种基本排序算法的Java实现
- Can&#39;t initialize OCI. Error -1
- Task类(任务)
- JsRender
- setTimeout()与setInterval()方法区别介绍
- redis的安装与配置
- python3 时间和日期
- django 下拉菜单显示为object的解决办法
- Micropython TurnipBit 青少年入门编程 交通灯实验
- 【java】doc转pdf
- 关于Java中static关键字的用法以及从内存角度解析
- Python数据库连接池DBUtils
- C#设计模式之十九策略模式(Stragety Pattern)【行为型】
热门文章
- MySQL详细知识点总结
- linux 基础12-程序与资源管理
- MySQL在command line Client下的一些命令
- Linux学习之六-Linux系统的基础优化
- Socket嵌套字通讯
- 快捷键IntelliJ IDEA For Mac
- Codeforces Round #539 (Div. 1) 1109F. Sasha and Algorithm of Silence's Sounds LCT+线段树 (two pointers)
- [Python自学] day-22 (1) (Session、CSRF、中间件)
- Codeforces Round #426 (Div. 2) B题【差分数组搞一搞】
- [Luogu] 区间统计Tallest Cow