String字符串常量相加和new对象
2016-07-05 11:23
351 查看
今天无易中看一个学习视频,明白了String字符串中一个小小的东西。
如:public void test(String key1,String key2){
String a=key1+key2;
String b=key1+key2;
System.out.println(a==b);
}
public static void main(String[] args){
new AccountTest().test("1", "");
}
//上边这段代码相信大家都知道结果为false,因为字符串在相加的时候是把key1+key2相加的结果放到了一个新创建的对象中。所以他们的结果为false
//但是如果
public void test(String key1,String key2){
String a="1"+"";
String b="1"+"";
System.out.println(a==b);
}
//上边这段代码相信大家都知道结果为true,为什么呢?
//因为在jvm翻译为二进制代码时,会自动优化,把两个值后边的结果先合并,再保存为一个常量。而上边那个通过参数传的值,因为jvm也不知道会传过来什么值,所以也就无法优化。
如:public void test(String key1,String key2){
String a=key1+key2;
String b=key1+key2;
System.out.println(a==b);
}
public static void main(String[] args){
new AccountTest().test("1", "");
}
//上边这段代码相信大家都知道结果为false,因为字符串在相加的时候是把key1+key2相加的结果放到了一个新创建的对象中。所以他们的结果为false
//但是如果
public void test(String key1,String key2){
String a="1"+"";
String b="1"+"";
System.out.println(a==b);
}
//上边这段代码相信大家都知道结果为true,为什么呢?
//因为在jvm翻译为二进制代码时,会自动优化,把两个值后边的结果先合并,再保存为一个常量。而上边那个通过参数传的值,因为jvm也不知道会传过来什么值,所以也就无法优化。
相关文章推荐
- linux串口termios(转载)
- [bzoj4635]数论小测验 解题报告
- 图片圆角处理封装
- 推荐系统概论
- maven 备用
- kafka 之 producer篇
- webview
- B站直播 DEMO ijkplayerDemo
- 博客里程
- Templates
- 例题8-12 UVA - 12627 Erratic Expansion 奇怪的气球膨胀 (递归)
- kafka 的network
- 拨开kafka 的羊毛衫
- ProgressDialog使用
- shell 判断 404
- AES对称加密
- 101. Symmetric Tree
- Route Filters
- Routes
- Android中的布局和控件的隐藏和触发显示