美文网首页java 从入门到精通
java 中 String == 原理 equals 和

java 中 String == 原理 equals 和

作者: Exception_Cui | 来源:发表于2021-04-27 15:37 被阅读0次
image.png
引用类型,==比较的是地址
String str1="abc" 相当于直接new 了一个string的对象,值在堆内存的字符串常量池
String str2="abc" 先是在字符串常量池里面寻找,如果有这个对象,那么直接就赋值给str2,
所以str1和str2的地址相同

char[] charArray={'a','b','c'}
现在堆里面创建一个char[]类型的对象,
String str3=new String(charArray),
在堆里面创建一个字符串的对象,然后将char类型转换为byte[],然后将地址给str3

String 是个引用类型,一旦定义是不可变得
String str1=“123”,
str1 ="234"  //相当于重新new了一个对象


== 和equals的区别

基本数据类型 == 比较的就是值
   
引用数据类型 或者对象
    重写了      equals   比较的就是值
    没有重写  equals   比较的还是地址

所以一般来讲 == 比较地址,equals比较值
int a =0;
int b=0
a==b;             true  基本数据类型 == 就是比较值

------------------------------------------------------
String str1="abc" ;
String str2="abc";
str1 == str2    true 引用数据类型 == 比较的就是地址(因为String 有个字符串常量池,所以这个值为true)

Persion p1= new Persion("张三");
Persion p2 =new Persion("张三"); 
p1 ==p2         false  == 比较的是地址
------------------------------------------------------

基本数据类型没有equals

String str1 = "abc";
String str2 = new String("abc");
str1 == str2                   false 此时两个地址不一样
str1.equals(str2)              true    //比较的是内容  原因是 String 重写了 equals 方法
 
Persion p1= new Persion("张三");
Persion p2 =new Persion("张三"); 
p1== p2                        false 此时两个地址不一样
p1.equals(p2)                  false   //没有重写 equals 还是比较的地址,查看object的源码
image.png image.png

相关文章

  • java 中 String == 原理 equals 和

    == 和equals的区别

  • My Coding Notes

    String 1. Java中String判断相等时equals与==的区别 equals :两个字符串对象所存放...

  • “==”和equals

    一直对Java中的“==”和equals的用法一知半解,在实际使用中又因为Character、String等分装类...

  • HashCode和Equals的区别

    HashCode和equals的区别: String方法的equals方法和HashCode方法 String的H...

  • 面向对象语言特性

    ——Java中的equals()和== Java中的equals和==不仅是笔试面试中的常客,同时也是我们在写代码...

  • Java

    Java部分 对String的理解 == equals和HashCode ==比较的是内存的存放地址 其实就是比较...

  • String中“==”和“equals”区别

    "=="比对的是对象在内存中的位置(地址)System.identityHashCode(str)注意:(1). ...

  • 2018Java面试准备

    Java面试总结 HashMap 工作原理 equals()和hashCode()作用 负载因子 线程安全 参考资...

  • API作业练习答案

    一、简述String类中的equals方法与Object类中的equals方法的不同点。 答:String类中的e...

  • Interview之一:hashCode 与equals

    1、hashCode 与 equals Java中的equals方法和hashCode方法是Object中的,所以...

网友评论

    本文标题:java 中 String == 原理 equals 和

    本文链接:https://www.haomeiwen.com/subject/astprltx.html