Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java有两种生成字符串对象的方法?_Java - Fatal编程技术网

为什么Java有两种生成字符串对象的方法?

为什么Java有两种生成字符串对象的方法?,java,Java,我看到java有两种方法来创建字符串对象,一种是使用构造函数,另一种是仅使用文本值。我理解两者之间的区别,但是为什么有两种不同的方法来创建字符串对象。否则您会怎么做?假设我们必须写作 String s = new String("hello world"); 如何获取作为字符串构造函数参数的字符串对象 责任必须停在某个地方 我想,你可以说“…”不是一个字符串对象,而是一个完全不同的东西,而这个完全不同的东西只能在字符串构造函数中使用,但除了带来不便之外,它给你带来了什么

我看到java有两种方法来创建字符串对象,一种是使用构造函数,另一种是仅使用文本值。我理解两者之间的区别,但是为什么有两种不同的方法来创建字符串对象。

否则您会怎么做?假设我们必须写作

  String s = new String("hello world");
如何获取作为字符串构造函数参数的字符串对象

责任必须停在某个地方

我想,你可以说“…”不是一个字符串对象,而是一个完全不同的东西,而这个完全不同的东西只能在字符串构造函数中使用,但除了带来不便之外,它给你带来了什么呢

当然,如果“…”不是一个字符串,那么如果存在
myFunc(String s)
,就不可能调用
myFunc(“fubar”)
,除非我们还有一个规则自动将“…”提升为字符串

如果我们有这个规则,那么我们也可以编写
String s=“hello world”

为什么Java有两种生成字符串对象的方法

因为它们有不同的用途

  • 文字允许您轻松简洁地创建一个包含固定内容的
    字符串
  • String
    构造函数允许您创建内容可变的
    String
    ;e、 g.从文件中读取的字符
现在,理论上,他们可以取消字符串文字支持。但是你能想象如果你不得不写这样的东西会有多不愉快吗

  System.out.println(new String(new char[]{'H', 'e', 'l', 'l', 'o'}));
一直都是吗

(对于字符串的某些定义,甚至汇编语言也支持“字符串”文字。将常量文本数据表示为字节或字符文字数组将是可读性的主要障碍,即使在汇编代码的上下文中也是如此……在最好的情况下,这是很难读取的。)



1-在编译时修复。

正如您所知,String有十几个构造函数,您还可以从任意数量的其他非String对象生成String对象,因此创建String对象的方法有两种以上。