java面试题5--String 的==和equals()方法
来源:互联网 发布:discover it 编辑:程序博客网 时间:2024/05/21 23:45
看程序写结果1:
==:比较引用类型时 比较地址值是否相同
equals:只比较引用类型 比较地址值是否相同
而String类重写了equals()方法,比较的是内容是否相同
/* * 看程序写结果 * */public class StringDemo1 { public static void main(String[] args) { String s1 = new String("hello");//在常量池中查找"hello",如果没有则在常量池中创建“hello”字符串 String s2 = new String("hello");//此时常量池中已经存在"hello"字符串,所以不需要新创建,直接拿过来 System.out.println(s1 == s2);// false System.out.println(s1.equals(s2));// true String s3 = new String("hello"); String s4 = "hello"; System.out.println(s3 == s4);// false System.out.println(s3.equals(s4));// true String s5 = "hello"; String s6 = "hello"; System.out.println(s5 == s6);// true System.out.println(s5.equals(s6));// true }}
内存描述图可以清楚地表达:
看程序写结果2:
字符串如果是变量相加,先开空间,再拼接。
字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。
/* * 看程序写结果 * */public class StringDemo2{ public static void main(String[] args) { String s1 = "hello"; String s2 = "world"; String s3 = "helloworld"; System.out.println(s3 == s1 + s2);// false--s1、s2都是变量,做字符串拼接时,是先开空间再拼接,新的空间地址值肯定不一样了 System.out.println(s3.equals((s1 + s2)));// true System.out.println(s3 == "hello" + "world");// false 这个我们错了,应该是true---先把"hello" 和 "world"两个常量加起来,看方法区中的常量池中是否有相应的,这时在常量池中找到了"helloworld", System.out.println(s3.equals("hello" + "world"));// true // 通过反编译看源码,我们知道这里已经做好了处理。 // System.out.println(s3 == "helloworld"); // System.out.println(s3.equals("helloworld")); }}
0 0
- java面试题5--String 的==和equals()方法
- String的面试题-==和equals
- java基础面试题之老题新解:"==" 和 "equals()"方法的区别
- Java面试题之==和equals的区别
- Java面试题—equals和==的区别
- java的String的equals方法和"=="比较
- Java字符串String:equals方法和==的区别
- String字面值对象和构造方法创建对象的区别的两个有关==和equals的面试题。
- String字面值对象和构造方法创建对象的区别的两个有关==和equals的面试题。
- "=="和equals方法究竟有什么区别? —— Java经典面试题系列
- Java基础面试题:==和equals方法有何区别?
- String 的==和equals()方法
- Java面试题 equals与==
- 面试题解析:3 java中 == 和 equals的区别
- 黑马程序员——Java面试题——equals和==的区别
- 理解Java中String的“==”方法和“equals”方法的机制
- String的 == 和 equals方法的比较
- String的==和equals()方法的区别
- 随想录(推荐《自制编译器》这本书)
- BestCoder Round #85
- Mybatis的配置以及实例测试
- c语言:数据的输入
- thinkpad机械硬盘换SSD固态硬盘的总结
- java面试题5--String 的==和equals()方法
- Linux下创建和使用静态库、共享库的方法总结
- 【机房合作——类图生成框架】
- Hdu 2067 小兔的棋盘 (卡特兰数)
- VS加载项目时报错 尚未配置为Web项目XXXX指定的本地IIS
- 南阳理工学院ACM语言入门题目49三个数从小到大排序
- (OK)(OK) install NS-3 NS3 - in Fedora 24
- UVALive7462 ——Work problem(读题能力很重要)
- 爱奇艺删除“我的电脑”中图标的解决办法?