Java 中String s="你好" 跟 String s=new String("你好")有啥区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 中String s="你好" 跟 String s=new String("你好")有啥区别相关的知识,希望对你有一定的参考价值。
在操作s上没区别。
区别在于
String s = "你好";这样"你好"这个字符串分配在栈中,随着所在函数的结束而被释放。
String s = new String("你好");这样"你好"这个字符串分配在堆中,不会因为所在函数的结束而被释放。只有等无人使用时,被Java虚拟机自带的垃圾回收机制释放。
参考技术A 没什么大区别。java 建立String对象
String s = new String("abc");
String s = "abc";
以上两句有什么区别;
"abc",然后再将其赋给s。
执行语句String s=new String("abc")时,不管字符串池中是否存在字
符串"abc",直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给s。
前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。 参考技术A 很简单一句话就搞定了:
String s = new String("abc"); 新建了一个对象将abc放进去,也就是放到了内存中
String s = "abc"; 只是个字符串变量 两个s虽然数值相等但真正意义并不想等 参考技术B String s = new String("abc");
是在堆里面创建一个“abc”的对象,用S指向这个对象的地址
String s = "abc";
是在StringPool里创建一个"abc"(如果有就不创建),并把S指向这个"abc" 参考技术C Sting 类 是java 经过特殊处理的类
所谓的特殊处理 就是可以直接写成
String s = "abc";这种形式
从效果来说String s = new String("abc");
和String s = "abc";是一样的
要说区别的话就是 String s = new String("abc");创建了一个对象,引用s 指向那个对象
而String s = "abc"; 没有实例化一个对象,只是一个对象的引用被赋值为 字符串常量"abc"
引用s 没有指向任何一个对象,谢谢~! 参考技术D 楼上的说的对,Sring是特殊处理过的,例如StringBuffer就不能直接写成StringBuffer s = "asc"
必须写成StringBuffer s = new StringBuffer("abc")
以上是关于Java 中String s="你好" 跟 String s=new String("你好")有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
java里String类型可以直接赋值,保存的是值还是引用的地址?
JAVA中String s = "hello"和String s = new String("hello")有啥区别啊?