关于java的String

来源:百度知道 编辑:UC知道 时间:2024/06/22 21:45:50
String a = "aaa";
String a = new String("aaa");
有什么区别? "aaa"是一个字符串常量,而new String("aaa")是一个String对象

都是字符串,且值相同..

区别是
"aaa"是字符串常量,是放在常量池中的.

常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。

对于像"aaa"这样的字符串常量,java会保证在运行时,该字符串常量中只会存在一个拷贝..即
String a = "aaa";
String b = "aaa";

则a==b为true

个人认为没什么区别。

基本没区别,只是2种不同的初始化方法而已

java所谓一切皆对象,就是把字符串也看做对象

而String a = "aaa";是为了习惯大多数程序员的一种写法

String a = "aaa";//创建了2个对象
String a = new String("aaa");//创建了三个对象
其它的没什么区别。

3楼正解

我在补充一点

基本数据类型(像int,double之类的)是放在常量池里的

String 是引用数据类型的 特殊的一种

a是放在栈里面的

new的 是放在堆里面的

a是一个引用 指向aaa的

一个是文字常量的引用,一个是字符串对象,如果
public static final String a = new String("aaa");
那么"aaa"的作用与常量a的作用是相同的,只不过"aaa"指向的字符串对象在常量存储区,而a引用在常量存储区,它所指向的对象在堆中。

"aaa"是一个文字常量的引用,
它所指向的字符串对象存储在常量存储区而且只有一