String字面值对象和构造方法创建对象的区别的两个有关==和equals的面试题。
来源:互联网 发布:王者荣耀刘备攻略知乎 编辑:程序博客网 时间:2024/06/06 05:58
01
package
常见对象_String;
02
03
public
class
StringDemo4 {
04
public
static
void
main(String[] args) {
05
String s1 =
new
String(
"hello"
);
06
String s2 =
new
String(
"hello"
);
07
System.out.println(s1==s2);
//false
08
System.out.println(s1.equals(s2));
//true
09
10
String s3 =
new
String(
"hello"
);
11
String s4 =
"hello"
;
//在方法区有这个常量值
12
System.out.println(s3==s4);
//false
13
System.out.println(s3.equals(s4));
//true
14
15
String s5 =
"hello"
;
16
String s6 =
"hello"
;
17
System.out.println(s5==s6);
//true
18
System.out.println(s5.equals(s6));
//true
19
}
20
21
}
面试题2:
01
package
常见对象_String;
02
03
public
class
StringDemo5 {
04
public
static
void
main(String[] args) {
05
String s1 =
"hello"
;
06
String s2 =
"world"
;
07
String s3 =
"helloworld"
;
08
System.out.println(s3==s1+s2);
//false(s1和s2是两个变量是先开空间再拼接在一起,所以不和s3地址值一直)
09
System.out.println(s3.equals(s1+s2));
//true
10
System.out.println(s3==
"hello"
+
"world"
);
//true(因为"hello"和"world"是常量,所以先拼接再去找有没有这个拼接后的常量,发现有,s3所以相等)
11
System.out.println(s3.equals(
"hello"
+
"world"
));
//true
12
13
//通过反编译看源码,我们知道这里已经做好了处理
14
// System.out.println(s3=="helloworld");
15
// System.out.println(s3.equals("helloworld"));
16
}
17
18
}
/*
* 结论:
* 字符串如果是变量相加,先开空间再拼接(一开空间,地址就绝对不一样)
* 字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则就创建
我们用Java的反编译工具XJad就可以看出来其中的原因
*/
(window).load(function (){var imgs =("#articleCon img"); for(var i = 0 ; i
阅读全文
0 0
- String字面值对象和构造方法创建对象的区别的两个有关==和equals的面试题。
- String字面值对象和构造方法创建对象的区别的两个有关==和equals的面试题。
- java面试题:String字面值对象和构造方法创建对象的区别
- String字面值对象和构造方法创建对象的区别:String s = new String("hello")和String s = "hello";的区别
- 1105 Java中String字面值对象和构造方法创建对象的区别
- 常见对象_String字面值对象和构造方法创建对象的区别
- java语言基础(53)——String 字面值对象和构造方法创建对象的区别
- java :两个对象相等equals和==的区别
- java:string对象equals 和 == 的区别
- 创建字符串对象的时候,使用字面值和使用new String()构造器这两种方式有什么不同?
- Java中两个对象的比较 equals()方法和==号的区别
- String经典问题(==和equals区别,new String为什么创建了两个对象)
- 有关String对象的一个面试题
- 回顾JavaSE(4)-String(3)四行代码分析String字面值对象和构造方法对象的内存分配
- String的面试题-==和equals
- 区别==和equals和String创建的区别
- C++string对象和字符串字面值的连接,+操作
- java中创建String类型对象的两种方式以及在使用equals()和“==”两种方法时的区别
- Linux shell 教程 00_入门
- 二维码的生成与扫描
- 使用SSH反向隧道进行内网穿透
- 上升子序列问题
- 光学知识
- String字面值对象和构造方法创建对象的区别的两个有关==和equals的面试题。
- 响应式网站开发
- leetcode-month2-week6
- 最长上升子序列
- SSM框架整合
- 我与construct 2的第一次邂逅
- Linux——进程
- SpringMVC 传参、重定向、文件上传
- 前端必须要注意的规范(二)之css规范