当我编写以下代码时
int a = "Java";
java 编译器显示以下错误:
cannot convert from String to int
所以常数
Java
被视为派生自的对象String
类。-
""
之间包含的每个字符列表是否正确?是否被视为从 String 类派生的对象?当我尝试连接两个字符串时,我使用了两个 以下示例:
String ch1 = "Java " ; String ch2 = "is cool"; String ch3 = ch1 + ch2;
在我使用命令
javap -c
之后在我编译的类(class)中我发现 编译器使用StringBuilder
的实例附加 两个字符串。但是还有另一个例子:
String ch = "Java " + "is cool";
尽管“Java”和“is Cool”这两个常量都是从
String
派生的两个对象。 类,编译器不使用StringBuilder
的实例到 附加两个字符串。-那么第二个示例中使用的方法是什么?
最佳答案
'+' creates a new String object every time it concatenates something, except when the concatenation is done at compile time.
虽然这不是一个有信誉的来源,但根据我在教科书中的内存,这听起来是正确的。基本上,将其应用到您的代码中:
String ch = "Java " + "is cool";
将在编译时处理,因为您定义了两个常量并将它们连接在一起,这意味着结果实际上也是一个常量,因此可以按常量处理并在编译时计算。看看您是否编译了该代码然后反编译以查看该语句如何读取,这将是很有趣的,我想它可能会读取:
String ch = "Java is cool";
至于另一种说法:
String ch1 = "Java " ;
String ch2 = "is cool";
String ch3 = ch1 + ch2;
由于 ch3 是根据 ch1 和 ch2 计算得出的,因此它是在运行时完成的,因为 ch1 和 ch2 是变量而不是常量。
关于你的第一个问题,我找不到任何引用文献,但据我所知,“”意味着一个字符串,就像“”意味着一个字符一样。我不太确定您想用该语句做什么,但我想您可以将字符串转换为 char 数组,然后将其转换为 int 数组。
关于java - 两个 Java 字符串的串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22919660/