数据类型与类型检查

数据类型

1.基本数据类型:无ID,栈分配,代价低,不可变
2.抽象数据类型:有ID,堆分配,代价高。可变
注意点
基本数据类型可以包装为抽象数据类型,便于在容器中使用
抽象数据类型具有层次结构,根类(object)抽象类
操作符可以重载

类型检查

1.java自动转换类型:高精度可转换为低精度
2.静态类型检查:编译时进行检查,检查语法错误,类名函数名错误,参数类型检查
3.动态类型检查:运行时进行检查,检查非法参数,越界,空指针
4.数值溢出无法检查错误,浮点数除零无法检查异常

不变性和可变性

1.不变性–重要的设计原则
不变数据类型:值无法改变
不变引用类型:引用对象无法改变
final关键字维持不变性–表明设计决策
类:无法继承
变量:值或引用无法改变
方法:子类无法重写方法
例:String(不可变)与StringBuild(可变)
String:引用修改时–复制一份原来的内容再进行修改
StringBuild:引用修改时–原来变量的内容也会改变
2.可变性与不可变性的优劣
可变性:性能高,便于在不同模块之间共享数据,安全性能差
不可变性:浪费空间,安全性好
例1

sum中修改了可变量List的值,一个方法可能会在完成功能的同时改变类中实例域的值
例2:
在这里插入图片描述
多引用导致类中值的改变

方法:防御性编程
函数返回时或函数入口处复制可能修改的内容


版权声明:本文为weixin_44117376原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。