关于String s=new String("xyz")创建了几个String对象

来源:百度知道 编辑:UC知道 时间:2024/05/07 15:07:02
为啥要创建"xyz"对象而不是直接把"xyz"值直接放到创建好的s的堆内存中
难道new String("xyz")等价于String a="xyz";new String(a);

2个对象 堆区中1个,常量池中1一个

String a="xyz";首先会到常量池中去查找,如果存在就不再分配,如果不存在就分配,常量池中的数据是在编译期赋值的,也就是生成class文件时就把它放到常量池里了

创建了两个对象,"xyz"在常量区分配的,new在堆里分配的

他们之间最大的区别就是所存放的位置不同,一个是堆中另一个是栈中,这就决定了他们的访问速度不一样了。
而且,new 了之后忘记了释放空间,就会一直占着个空间不妨的,不过这又有利于共享,这就看你自己具体应用了。