JAVA中String s = "hello"和String s = new String("hello")有啥区别啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中String s = "hello"和String s = new String("hello")有啥区别啊?相关的知识,希望对你有一定的参考价值。

存放地方的区别:
第一个s是一个字符串常量,它存放在内存的静态存储区。
第二个s是一个对象,它是存放在堆中的。
用法的区别:
第二个是个对象,所以可以用String类中的所有方法,而第一个不是对象,它不可以操作String类中的方法
参考技术A 晕倒,没什么大的区别
第一个s是一个字符串常量,它存放在内存的静态存储区。
第二个s是一个对象,它是存放在堆中的。

用法是一样的。
参考技术B String s = "hello"存放在内存中的字符串常量区,
String s = new String("hello")在堆区创建了一个对象
参考技术C String s = "hello" 创建了两个对象: s 和 hello
String s = new String("hello")三个 s String对象 和 hello
参考技术D 二楼的说的比较全面 就是这个样子

Java 中String s="你好" 跟 String s=new String("你好")有啥区别

在操作s上没区别。

区别在于

String s = "你好";

这样"你好"这个字符串分配在栈中,随着所在函数的结束而被释放。

String s = new String("你好");

这样"你好"这个字符串分配在堆中,不会因为所在函数的结束而被释放。只有等无人使用时,被Java虚拟机自带的垃圾回收机制释放。

参考技术A 没什么大区别。

以上是关于JAVA中String s = "hello"和String s = new String("hello")有啥区别啊?的主要内容,如果未能解决你的问题,请参考以下文章

java中String s = new String("abc")创建了几个对象

java中String的null和""

在java 中,String cmd=scanner.nextLine();String help

根据 "\s+" 拆分空字符串时的 String#split 行为

JAVA中的String对象

java 建立String对象