请问java里string xxx和string xxx=new string的几个问题?

来源:百度知道 编辑:UC知道 时间:2024/05/04 11:47:07
我知道他们创建在不同的内存段上。new出来的对象可以调用很多方法。

我想问他们是不是有些联系,我觉得他们其实是一回事。string xxx 这个对象是不是也有 new xxx 一样的方法?

String xxx 只是定义一个XXX为String对象,它没有为xxx开辟内存空间,只是靠系统xxx可以被义为String。string xxx=new string()是实例化了一个String对象,并将内存地址赋给xxx 这样xxx就被定义为String了.
从结果上看,是没什么区别,但是从内存上看就不一样了哦!
初学者要养成分析内存的习惯,看到代码就去想内存,不要看表面现象!
另外编程的时候最好习惯用StringBuffer 来代替String最后把StringBuffer创建的xxx.toString()就好了!

String xxx 只是定义一个XXX为String对象,它没有为xxx开辟内存空间,只是靠系统xxx可以被义为String。string xxx=new string是实例化了一个String对象,并将内存地址赋给xxx 这样xxx就被定义为String了

其实在 java中最特殊的类就是就是String 了 我个人这么感觉的

先说 String s = new String() 这个和生成其他对象的引用没什么区别
那特殊在哪了呢 就特殊在 String s ="***"; 就特殊在这了 声明的时候看上去和基本数据类型一样 ,但是 先在s里面存放的可是内存地址,如果你做过实验你就又要问 那么存放内存地址的情况下 String s1 ="aaa"; String s2 ="bbb"; s1==s2的结果返回就应该是false 但是结果返回的确实是true 那么要是这么说 就只有一种可能性了 就是 s1 s2 指向了 同一个块内存地址 对的 就是指向了同一个块内存地址 只是SUN 说的比较好听 说是什么为了优化 为了这个 为了那个 咱也不敢说 我想就是他们写这个规范的时候没考虑的太周全!

java 中的8中基本数据类型里有string
java基本类里有一个String类

string xxx 在栈上分配
new String 在堆上分配。