java 中的String 和new String 的区别

在java中,如下两语句有何区别:
String str1="abc";
String str1=new String("abc");
str1和str1相等吗?

楼主,测试一下就很清楚了.
public class StringTest {
public static void main(String[] args) {

String str1="abx";
String str2="abx";
String str3=new String("abx");
String str4=new String("abx");
System.out.println(str1==str2);
System.out.println(str2==str3);
System.out.println(str3==str4);
}

}
结果:
true
false
false
当String str1="abx" "abx"是一个对象
String str2="abx"明显是有声明了一个到“abx”的一个引用str2
所以测试str1==str2时打印true
但String str3=new String("abx");这是显示的创建了一个String对象。判断==时,显然两个对象不是同一个对象。所以判断字符相等的时候我们都用equals方法。也是这个道理。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-02-27
内存中有区别,
String str = "hello" 如果之前有String对象是hello的值的话那str直接就指向之前的那个对象了,不再重新new一个对象了
String str = new String("hello");无论以前有没有都重新new一个新的本回答被提问者和网友采纳
第2个回答  2011-10-11
不相等
内存中有区别,
String str = "abc" 如果之前有String对象是abc的值的话那str直接就指向之前的那个对象了,不再重新new一个对象了
String str = new String("abc");无论以前有没有都重新new一个新的
第3个回答  2015-10-27
内存中有区别,
String str = "hello" 如果之前有String对象是hello的值的话那str直接就指向之前的那个对象了,不再重新new一个对象了
String str = new String("hello");无论以前有没有都重新new一个新的
第4个回答  2015-12-02

 String s = new String(“hello”)和String s = “hello”;

前者会创建2个对象,后者创建1个对象。

public class StringDemo2 {
public static void main(String[] args) {
String s1 = new String("hello");
String s2 = "hello";

System.out.println(s1 == s2);// false
System.out.println(s1.equals(s2));// true
}
}

String 和 new String的区别
2、特性不同:String类 是final修饰的,不可以被继承。String类的底层是基于char数组的。3、性能效率不同:String类被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。例如:String str = “hello";str = str + "world“;所以当上文str指向了一个String对象(内容为“hello”),然...

Java中String直接赋字符串和new String的区别
1. String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;

Java中String直接赋字符串和new String的区别
关于字符串String赋值,Stringa="123",这种方式比Stringa=newString("123");效率高多了。后者其实会创建两个对象。"123"是一个常量池里的对象,new出来的对象是存放在内存堆中的,new出来的又是一个对象。Stringa="aaa";用这种方式

Java中String直接赋字符串和new String的区别
直接定义一个字符串常量,放在常量池。后者生成两个对象,一个是括号里面的常量,一个是new出来的引用对象

Java中String直接赋字符串和new String的区别
直接赋值是在常量池寻找字符串,new的会创建对象 看这个 String a="abc",b="abc";String A=new String("abc")B=new String("abc")a==b 是true A==B 是false

Java中String直接赋值和使用new的区别
String a="abc";String b="abc";a==b返回的结果是true 他们指向的地址是同一个 而new会重新分配内存给每个String分配不同的内存空间 String a=new String("abc");String b=new String("abc");a==b返回的结果是false,他们指向的地址不同 所以String比较才需要使用equles ...

java里,String s;和new String( );有什么区别吗
String是一个特殊的包装类数据。可以用:String str = new String("abc");String str = "abc";两种的形式来创建,第一种是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。而第二种是先在栈中创建一个对String类的对象引用变量str,然后查找栈中有没有存放"abc",...

在java中String name 和 String name=new String()有什么区别吗
有区别.区别如下:前者: 声明了一个类型为 String 的变量 'name'\/\/创建对象数: 0 后者: 声明了一个类型为 String 的变量 'name' & 创建了一个 String 类型的对象,并把该对象的引用传递给了 'name'\/\/创建对象数: 1 have fun.

Java里为什么string不用new呢?又不是基本数据类型。
一是new型:String s = new String("abc");另一种是双引号型:String s = "abc";那么这两种方式有什么区别呢?答:这两种方法生成的字符串对象,在内存中的存取机制不同。Java为String类型提供了缓冲池机制,当使用双引号定义对象时,Java环境首先去字符串缓冲池寻找相同内容的字符串,如果存在就...

Java中String直接赋字符串和new String的区别
直接赋值时,如果常量池中有该字符串,则直接把其地址引用 new,则重新画一个地址,如果常量池中有该字符串,则再引用

相似回答