String s = new String(
时间: 2023-02-24 19:18:05 浏览: 151
"String s = new String(" 表示在 Java 程序中创建一个字符串对象并将其引用赋值给变量 "s"。在括号内可以放置一个字符数组或其他字符串对象,作为构造函数的参数,以初始化该字符串对象的值。
例如:
```
char[] chars = {'h', 'e', 'l', 'l', 'o'};
String s = new String(chars);
System.out.println(s); // 输出:hello
```
相关问题
String s = "xyz" 和 String s = new String("xyz") 比较
在 Java 中,String s = "xyz" 和 String s = new String("xyz") 都可以创建一个包含字符串 "xyz" 的 String 对象。但是它们之间有一些细微的差别。
1. 在内存中的存储方式不同:String s = "xyz" 是通过字符串常量池存储的,而String s = new String("xyz")则是通过堆内存存储的。
2. 字符串常量池中只会存在一个 "xyz" 对象,而通过 new 关键字创建的 String 对象则会在堆内存中新开辟一个存储空间,不管该字符串是否已经存在于字符串常量池中。
3. 对于只有 String s = "xyz" 的情况,Java 会在编译时就将其转换为常量,因此它的效率更高;而对于 String s = new String("xyz") 的情况,Java 在运行时才会创建一个新的对象,因此效率相比前者要低一些。
因此,推荐使用 String s = "xyz" 来创建字符串对象,除非你确实需要在新的堆内存空间中创建一个新的 String 对象,才使用 String s = new String("xyz")。
String s="abc"与String s=new String("abc")的区别
在Java中,String s="abc"和String s=new String("abc")都是创建一个字符串对象。但是,它们的区别在于:
1. 内存分配方式不同:String s="abc"是在常量池中创建一个字符串对象,Java虚拟机会在编译时将其放入常量池中,如果常量池中已经有"abc"对象,则直接返回该对象的引用;String s=new String("abc")会在堆中创建一个新的字符串对象。
2. 对象引用方式不同:String s="abc"是直接将字符串"abc"的引用赋值给s变量;String s=new String("abc")是先在堆中创建一个新的字符串对象,然后将该对象的引用赋值给s变量。
3. 比较方式不同:String s="abc"使用==比较时,比较的是引用地址;String s=new String("abc")使用==比较时,比较的也是引用地址;但是使用equals()方法比较时,比较的是字符串的内容。
阅读全文