java - 两个 Java 字符串的串联

标签 java string concatenation

  1. 当我编写以下代码时

    int a = "Java";
    

    java 编译器显示以下错误:

    cannot convert from String to int

    所以常数Java被视为派生自的对象 String类。

    - "" 之间包含的每个字符列表是否正确?是否被视为从 String 类派生的对象?

  2. 当我尝试连接两个字符串时,我使用了两个 以下示例:

    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 的实例到 附加两个字符串。

    -那么第二个示例中使用的方法是什么?

最佳答案

From here.

'+' 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/

相关文章:

java - 发布到合流时 Jenkins SSLHandshakeException

java - Selenium WebDriver 中的 URL Malformed 异常使用 Java 查找断开的链接

Java:无法从 String 转换为 int

mysql - 合并多行消除重复并连接多列

postgresql - 在 Postgres 中连接行

java - Opencv - 构建 Opencv 失败 (MacOSX)

java - 使用 versions-maven-plugin 在我的父 pom.xml 中获取最新版本的插件

C 字符串数组输出不正确

string - 如何用矩形边界框构造 R 树(STR 方法)?

c#优化选择字符串创建循环