Java里为什么string不用new呢?又不是基本数据类型。

2025-04-10 09:02:45
推荐回答(2个)
回答1:

创建String对象,有两种方式,
一是来new型:String
s
=
new
String("abc");
另一种是双引号型:String
s
=
"abc";
那么这两种方式有什么区别呢?
答:这两种方法生成的字符串对象,在内存中的存取机制不同。
Java为String类型提供了缓冲池机制,当使用源双引号定义百对象时,Java环境首先去字符串缓冲池寻找相同内容的字符串,如果存在就直接拿出来应用,如果不存在则创建一个新的字符串放在缓冲池中。示例代码如下:
String
a
=
"tom";
String
b
=
"tom";
在上诉代码中,变量a和b使用的是缓冲区中的同一个存储对象。
在使用String构造方法定义对象时,Java环境会和创建其他类型的对象一样,每次调用时,都会去创建一个新的对象。示例代码如下:
String
a
=
new
String("tom");
String
b
=
new
String("tom");
在上述代码中,变量a
和b
使用的是两个不同的存度储对象,只是对象中的内容相同。
通常情况下,建议使用string
a="tom";。

回答2:

java
中String
是个对象,是引用类型百
基础类型与引用类型的区别是,基础类型只表示简单的字符或数字,引用类型可以是度任何复杂的数据结构
基本类型仅表示简单的数据类型,引用类型可以表示复问杂的数据类型,还可以操作这种数据类型的行为
java虚拟机处理基础答类型回与引用类型的方式是不一样的,对于基本类型,java虚拟机会为其分配数据类型实际占用的内存空间,而对答于引用类型变量,他仅仅是一个指向堆区中某个实例的指针。