Java基础复习String对象创建的分析
来源:互联网 发布:vs2010 socket编程 编辑:程序博客网 时间:2024/05/18 08:55
java虚拟机分为堆,栈,方法区。String是一个final类,一但被创建后就不能被更改其值
1.Sample sample = new Sample("abc");
“sample” 对象名,只是分配了一个引用,并不会为它分配一个存储空间,引用一般保存在栈里面,"abc"是个常量 一个字面值,编译的时候直接存储它的字面值,这样的字面值一般被创建在String维护的常量池,在方法区中。new Sample()一般通过new出来的对象保存在堆里面,堆里面会保存完整的对象信息。所以严格来说只创建了一个对象。如果认为常量池里面的'abc'也是一个对象的话,那就是创立了2个对象,但是我认为只有在堆里面保存的才是真正的对象
2.String a = "123";
String b = "123"
System.out,.println(a==b);//true
a和b都保存在String的常量池中,引用a创立后JVM先到字符串池中查找,看是否已经存在值为"123"的对象,如果存在,则不再创建新的对象,直接返回已存在对象的引用;如果不存在,则先创建这个对象,然后把它加入到字符串池中,再将它的引用返回。所以创立b的时候就直接返回"123"的引用了。
3.String a = new String("123");//引用a指向堆中的对象
String b = "123";//指向常量池
System.out,.println(a==b);//false,当然不可能相等
4 String a ="1"+"2"+"3";创建了几个对象。“1”.“2”,“12”,“3”.“123”,只是产生了5个常量,按照分析是字面值保存在常量池里面,如果上面3个例子分析成立的话,严格来说就是没有创建对象,或是创立了5个对象
- Java基础复习String对象创建的分析
- 【JAVA基础】 - 对于String创建对象的理解
- 【Java基础一】String创建对象"" && null
- java基础复习 面向对象,String类,正则表达式
- JAVA String对象的创建
- JAVA基础和面向对象的复习
- Java基础:创建String对象时,String s=new String("abc")和String s="abc"的区别
- java基础1:对象创建内存分析
- Java基础复习:线程创建
- Java基础复习:编写简单的String工具类
- java string 创建对象
- Java String 创建对象
- JAVA创建String对象的问题
- java创建String对象的问题
- Java String数组对象的创建测试
- java 中String创建对象的区别
- JAVA基础之再次解读String-创建几个对象
- 复习创建java对象常见的一种的底层步骤
- Postgresql 分区表测试
- Struts2学习
- qt做计算器时的想法
- 线性结构
- C#学习之接口
- Java基础复习String对象创建的分析
- Java nio初步了解
- Unix高级环境编程—进程控制(一)
- C-C++中#define的主要用途
- 关于多态和数组的比较
- kAri OJ84 Single Number(强大的位运算)
- IOS 获取设备本地音视频
- 内联函数
- 实现栈的逆序 递归 不申请额外的数据结构