这是第二次的学习笔记。
一、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修饰局部变量和成员变量时有所不同:
- final 修饰的局部变量必须使用之前被赋值一次才能使用。
- final 修饰的成员变量在声明时没有赋值的叫“空白 final 变量”。空白 final 变量必须在构造方法或静态代码块中初始化。
我理解为,这个指针(参考C语言)指向了这个地址,然后就不能够再让它指向另一个地址了。比如上面的a,如果我让final修饰它,那么就不能够再让a指向“mnt”所在的地址。
三、Dependency和Association
课程ppt中写到,Dependency是临时性的delegation,Association是永久性的delegation。我的理解为,Dependency就像我在需要时借用一下同学的橡皮,Association则是我使用一块和同学的橡皮一样的另一块橡皮,或者干脆就一直使用他的橡皮。
Association有两个下属分类,为Composition和Aggregation。两者的区别在于,Composition中我使用的橡皮是我的,而Aggregation中是借用的同学的橡皮。