黑马程序员技术交流社区
标题:
字符串常量池的问题
[打印本页]
作者:
newLife
时间:
2014-11-11 19:23
标题:
字符串常量池的问题
String s1=new String("aaaa");这个在编译时期里“aaaa”会不会进入字符串常量池?在编译时期系统就会自动解析成这样?String s="aaaa";
String s1=new String(s);
如果是这样的话,那么“aaaa”这个常量会进入常量池,如果不是这个步骤,那么传入的“aaaa”也是新建立的对象?那么具体是哪样求解!
作者:
win_top1
时间:
2014-11-12 23:54
创建了两个字符串对象,首先会在字符串池中寻找是否存在一个“xyz”的字符串对象,如果没有,那么这时就会在池中创建一个该对象,如果池中有那么就不需要创建,然后在堆中在创建一个"xyz"的对象,最后返回堆中的这个对象的地址并赋给s这个引用即可;
如果用字面值的方式创建字符串对象的时候,即String s="abc"; 那么此时有可能没有创建对象,而是返回字符串池中已有的这个"abc"这个对象的地址并赋值给s,当然若果池中没有这个对象,那么这时就会在池中创建这个对象,最后返回这个对象的地址即可
楼主要知道创建字符串对象的两种方式和字符串池的概念
作者:
win_top1
时间:
2014-11-12 23:58
对于String s1=new String("aaaa");创建了两个字符串对象,首先会在字符串池中寻找是否存在一个“aaaa”的字符串对象,如果没有,那么这时就会在池中创建一个该对象,如果池中有那么就不需要创建,然后在堆中在创建一个"aaaa"的对象,最后返回堆中的这个对象的地址并赋给s这个引用即可;
如果用字面值的方式创建字符串对象的时候,即String s="abc"; 那么此时有可能没有创建对象,而是返回字符串池中已有的这个"abc"这个对象的地址并赋值给s,当然若果池中没有这个对象,那么这时就会在池中创建这个对象,最后返回这个对象的地址即可
楼主要知道创建字符串对象的两种方式和字符串池的概念
作者:
newLife
时间:
2014-11-13 12:15
win_top1 发表于 2014-11-12 23:58
对于String s1=new String("aaaa");创建了两个字符串对象,首先会在字符串池中寻找是否存在一个“aaaa”的 ...
那么在这个例子中池中是有这个对象呢还是没有?如果没有就会在池中创建创建该对象这句话,这个动作是在编译时期还是在运行时期?如果在运行该“aaaa”这个对象是怎么进入常量池的?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2