第三章:ADT和OOP(第一节)

3.1数据类型和类型检查

主要内容:

  1. 基本/对象数据类型
  2. 静/动态类型检查
  3. 可变/不可变数据类型

  4. 值/引用的改变
  5. SnapShot

-----------------------------------------------------------------------------------------------------------------

1.基本数据类型与对象数据类型的区分

联系:

将基本数据类型包装为对象类型:

Boolean,Integer,Short 等等

尽量避免使用这种对象类型,一般是在集合定义的时候使用。

2.静态类型检查与动态类型检查:

静态类型检查:在编译的时候检查(JAVA)

                       检查:语法错误,类名。函数名,参数类型,返回值错误

                       在编译阶段发现错误,避免将错误带到运行阶段

动态类型检查:运行时检查

                       检查:非法参数值,非法返回值,数组等越界,空指针

区别:静态类型检查是关于值的类型的检查,不检查具体的值

          动态类型检查是关于值的检查

动态>静态>不检查

----------------------------------------------------------------------------------------------------

3.可变性与不可变性

改变一个变量:将该变量指向另一个存储空间(改变引用指向的地址)

改变变量的值:刷先内存空间,将新的值存入内存


不可变性:一旦不创建,值不可以被改变

                引用类型也可以是不变的(final Person)

                (final关键字较特殊,无法被继承,被重写,无法改变值,也无法改变引用)


不可变对象:一旦被创建,始终指向一个值/引用

可变对象:拥有可以修改自己值/引用的方法

(final 创建的immutable String这种不可变对象和String 本身这种不可变对象是不一样的,final是完全不能修改什么都不能改变,而不加final则是通过指向新的对象来改变,改变引用的值)

final String a="a"
a=a.concat("b") //error
String b="b"
b=b.concat("c")//正确,

不可变对象不是不能修改,而是对他修改要让他指向新的对象,需要产生大量拷贝。


而可变类型则不需要产产生拷贝,但是不安全

(String 是immutable的,但是StringBuilder是mutable,Date是mutable的)。

防御式拷贝可以改变可变对象的安全性:拷贝一个新的对象(无论是传参还是返回)--我觉得这就是模仿了Immutable的特性

单引用时,可变与不可变无区别,当有多个引用时,差别出现:

可以发现a这个引用指向的对象已经变了,但是b仍然指向原先的对象

-----------------------------------------------------------------------------------------------------------------4.SnapShot快照

不可变引用:双箭头

 

不可变的引用,其引用是不变的,但值是可变的(引用未变指它的地址没有改变)

                       但是如果是String ,加上final,引用不变,值也不能变


可变引用:单箭头

         可以指向不可变的值(String)

可变引用(与对象是不是可变与不可变的无关系,只要用final 的就是不可变引用,其余的是可变引用)

引用改变:指向的地址改变



      


















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值