1、举例代码如下:public class StringDemo {
public static void main(String[
args) {
String s1 = \"Hello\";
String s2 = \"Hello\";
System.out.println(s1 == s2); // true
2、稍微改动一下程序 , 会有奇怪的发现:public class StringDemo {
public static void main(String args[
) {
String str1 = \"Hello\";
String str2 = new String(\"Hello\");
String str3 = str2; // 引用传递
System.out.println(str1 == str2); // false
System.out.println(str1 == str3); // false
System.out.println(str2 == str3); // true
System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true
System.out.println(str2.equals(str3)); // true
上方我们new了一个对象 , 用“==”比较s1和s2 , 返回的结果却是false;而用用“equals”比较s1和s2 , 返回的结果是true 。
为了分析上面的代码 , 我们必须首先分析堆内存空间和栈内存空间 , 这一点非常重要:
看完上面的图 , 再结合上面的代码 , 就一目了然了 。 现在我们可以给自己出一道面试题:
面试题:请解释字符串比较之中“==”和equals()的区别?
==:比较的是两个字符串内存地址(堆内存)的值是否相等 , 属于地址值比较;
equals():比较的是两个字符串的内容 , 属于内容比较 。
以后进行字符串相等判断的时候都使用equals() 。
3、再次更改程序:public class ObjectDemo{
public static void main(String[
args) {
String s1 = \"Hello\";
String s2 = new String(\"Hello\");
s2 = s2.intern();
System.out.println(s1 == s2); // true
System.out.println(s1.equals(s2)); // true
4、比较两个对象的值:代码如下:
上述代码的第5行中 , java.lang.String的intern()方法\"abc\".intern()方法的返回值还是字符串\"abc\" , 表面上看起来好像这个方法没什么用处 。 但实际上 , 它做了个小动作:检查字符串池里是否存在\"abc\"这么一个字符串 , 如果存在 , 就返回池里的字符串;如果不存在 , 该方法会 把\"abc\"添加到字符串池中 , 然后再返回它的引用 。
public class Demo6 {
public static void main(String args[
) {
Student student1 = new Student(\"生命壹号\" 22 \"成都\");
Student student2 = new Student(\"生命壹号\" 22 \"成都\");
System.out.println(student1 == student2); //false
System.out.println(student1.equals(student2)); //true
class Student {
private String name;
private int age;
private String address;
public Student(String name int age String address) {
this.name = name;
this.age = age;
this.address = address;
//重写Object类中的equals方法(比较两个对象的值是否相等)
- 早报:华为P50 Pocket新色预售 百度世界大会定档
- 百度地图|Java程序员应知应会之Maven和Gradle的区别
- |强劲送风,满足你对美感的挑剔—洛斐有范S桌面风扇
- 编程|打造Web3.0基础设施 百度瞄准元宇宙的“人货场”?
- 百度|打造Web3.0基础设施 百度瞄准元宇宙的“人货场”?
- 百度网盘会员1天24小时百度网盘超级会员不限速特权说明断网如何查看网盘文件
- 中国虚拟人哪家强?沙利文、IDC:小冰百度商汤位列第一梯队
- web3.0时代,百度再造入口
- 百度|阿里“锦衣卫”蒋芳,入职23年将7名高层送入狱,连马云都可以查
- Java|网站关键词seo排名在百度前三页怎么优化?
