java9举例代码: (引荐进修:java课程)
String str1 = "abc"; String str2 = "abc"; String str3 = new String("abc"); String str4 = new String("abc");
当: str1 == str2 输出:true 当:str1.equals(str2); 输出:true 当: str1 == str3 输出:false 当:str1.equals(str3); 输出:true 当: str3 == str4 输出:false 当:str3.equals(str4); 输出:true
涉及到的细节:
- 能够经由过程String中intern要领,字符串对象在常量池中和它相称的字符串的援用
str3.intern() == str4.intern() 输出:true str1.intern().equals(str2.intern()) 输出:true str1.intern() == str1 输出:false - String str = new String("abc");建立了几个对象?
起首要看常量池里是不是有“abc”这个字符串,假如有(String str = "abc";出现时则有),则建立一个,假如没有,则建立两个(一个在常量池,一个在堆中)。
equals和==的区分
关于 == :
作用于基础数据范例的变量,则直接比较其存储的 “值”是不是相称;
作用于援用范例的变量,则比较的是所指向的对象的地点;
关于 equals:
equals要领不能作用于基础数据范例的变量;
假如没有对Object中equals要领举行重写,则比较的是援用范例的变量所指向的对象的地点,反之则比较的是内容
以上就是java equals和==的区分的细致内容,更多请关注ki4网别的相干文章!