- 博客(4)
- 收藏
- 关注
原创 为什么重写equals()?又为什么必须重写hashCode()
重写equals方法依然无法改变==的底层逻辑,即在比较引用数据类型的时候会比较两者的地址。而为了使两个属性相同的不同对象的==返回值为true,我们必须使两者的地址相同。这样就实现了相同属性的不同对象地址相同的目的。这是当Set底层调用equals方法判断后发现,这几个对象的属性是完全一致的,于是不允许重复添加到Set中。通过Object.equals方法的源代码我们可以发现,Object.equals 的底层逻辑就是==,而==在对引用数据类型做判断时是通过比较两个对象的地址实现的。
2022-10-25 15:25:55
325
原创 通过简单的静态对象理解System.out.println()原理
此处df是声明在方法体外类以内的静态变量,只不过是通过创建对象声明的变量。通过静态变量的访问方法,类名.变量名 以a.df的方式访问到了df这个静态变量。又因为df是b这个引用类型的变量,并且创建了对象,因此可以访问b中的方法exam(),就是引用.方法名的形式访问b类中的方法。同理创建一个实例变量如下。通过引用.的形式访问到了实例变量df,再通过引用.的形式访问到了类b里的方法。借此可以理解System.out.println()方法为什么存在两处.
2022-10-18 10:18:01
329
原创 String类型的大小比较(四种情况)
在实际的字符串比较当中会遇到多种情况结果:}两个简单常量的比较,自然是相等。(a是存储在方法区的常量)返回值为}返回值自然也是false。两个例子中,用==比较的两个值显然是相等的,但由于存储的地址不相同,因此由==返回的值是false。面对第3条当中的情况,我们可以通过java源文件中的str.equals()方法来判断相等。
2022-10-15 23:21:28
18851
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人