软件构造学习笔记(二)

这是第二次的学习笔记。

一、equals和==的区别

        ==用于比较两个基本数据类型变量的值,或者比较两个对象的内存地址是否相同

        equals,在不重写的时候(默认)是比较地址,重写则可以比较值的内容。注意equals不能用于比较基本数据类型的变量。

        也就是说,在不进行重写时,equals和==起到相同的作用。

二、可变、不可变和final

        可变与不可变指代的是当获得某个类的实例引用时,不可以改变实例的内容。比如:

String a = new String("xyz")

        通俗来讲,这个a就相当于指向了一个字符串,内容是“xyz”,并且不能修改字符串的内容。如果需要进行修改操作,应当换用其他的类型,如String是不可变的,可以使用可变的StringBuilder来进行修改操作。

        当然,也可以修改a的指向。这里我理解为,a就相当于C语言中的指针,他指向一个地址,现在这个地址上是“xyz”,但是我可以建立另一个String变量b,b指向“mnt”,然后让a=b,这样a就指向了b指向的那个地方。

        而final指代的是,经final修饰的变量会成为常量,只能够被赋值一次。final修饰局部变量和成员变量时有所不同:

  1. final 修饰的局部变量必须使用之前被赋值一次才能使用。
  2. final 修饰的成员变量在声明时没有赋值的叫“空白 final 变量”。空白 final 变量必须在构造方法或静态代码块中初始化。

        我理解为,这个指针(参考C语言)指向了这个地址,然后就不能够再让它指向另一个地址了。比如上面的a,如果我让final修饰它,那么就不能够再让a指向“mnt”所在的地址。

三、Dependency和Association

        课程ppt中写到,Dependency是临时性的delegation,Association是永久性的delegation。我的理解为,Dependency就像我在需要时借用一下同学的橡皮,Association则是我使用一块和同学的橡皮一样的另一块橡皮,或者干脆就一直使用他的橡皮。

        Association有两个下属分类,为Composition和Aggregation。两者的区别在于,Composition中我使用的橡皮是我的,而Aggregation中是借用的同学的橡皮。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值