Java基础---对String s1="abc"和String s2=new String("abc")的理解
来源:互联网 发布:oracle手动创建数据库 编辑:程序博客网 时间:2024/06/10 09:15
首先看这两行代码:
String s1 = "abc";String s2 = new String("abc");
之前看到一些学习Java的同僚,对以上两行代码产生疑虑,自己学习到这里,所以想分享出来我的理解。
简单说这两行代码的区别是,第一行代码是生成一个对象;第二行是两个对象。这便是不同之处。
具体分析如下:
第一行代码:
首先在 栈 中开辟一个空间存放一个 s1 引用。然后在java的方法区中的常量池开辟空间建立存放一个String类型的"abc"(假设之前常量池为空;因为如果之前有"abc"的话,就不会重新建立),引用 s1 指向池中的"abc",此时 s1 存放的是"abc"的地址。
第二行代码:
首先在 栈 中开辟一个空间存放一个 s2 引用。Java中,只要使用new关键字来创建对象,则一定会在堆区创建一个新的对象。然后,在堆中开辟空间建立了new String对象,这是一个对象;然后在堆中建立了一个对象"abc"并放入这个new String对象里面。一共两个对象。此时 s2 指向这个new String的堆地址。
接着看着两行代码:
String st1 = "abc"; System.out.println(st1 == "abc");String st2 = new String("abc");String.out.println(st2 == "abc");//输出结果 ture false
我的理解如上。
如果哪里不正确,还希望各位看到这篇博客的朋友能指出来。
1 0
- Java基础---对String s1="abc"和String s2=new String("abc")的理解
- String s1 = new String("abc"); String s2 = ("abc");
- String s1 = new String("abc")和String s2 = "abc"的区别
- String s1="abc"; s2="abc" s3= new String("abc")为啥s1和s2的地址值一样而s1和s3的就不一样呢?
- String s1="abc";与String s2=new String("abc");-关于Java栈与堆的思考
- String s1="abc";与String s2=new String("abc"); 关于Java栈与堆的思考
- String s1="abc";与String s2=new String("abc");-关于Java栈与堆的思考
- 从内存角度去分析String s1= "abc"与String s2 = new String("abc")的问题
- Java基础:创建String对象时,String s=new String("abc")和String s="abc"的区别
- java基础经典问题String str=new String("abc")和String str="abc"
- 关于JAVA中String="abc"和String=new String("abc")的区别与联系
- 关于String s1 = new String("abc") 创建一个对象问题和Java常量池总结
- String s2 = "abc"; 与 String s3 = new String("abc");原理解析
- Java String类型的String s = "abc"和String s = new String("abc")的区别
- java基础经典问题String str=new String("abc")和String str="abc"(转贴)有个人总结StirngBuffer
- new String("abc")与String a="abc"的区别
- new String("abc")和“abc”的区别
- new String("abc")和“abc”的区别
- TCP建立,释放连接
- Git学习笔记(二) Git初始化
- 九度oj-1152-点菜问题
- 36. PHP 逻辑运算符
- Git学习笔记(三) Git暂存区
- Java基础---对String s1="abc"和String s2=new String("abc")的理解
- web开发的常用工具
- c++运算符重载总结
- Git学习笔记(四) Git对象
- 一些iOS开发中的零碎知识
- 第五周【项目1-体验常成员函数】
- 坦克大战-引擎架构
- 探究redis和memcached的 LRU算法--------redis的LRU的实现
- Git学习笔记(五) Git重置