如何在Java中连接两个字符串?

我想连接Java中的字符串。 为什么这不起作用?

public class StackOverflowTest { public static void main(String args[]) { int theNumber = 42; System.out.println("Your number is " . theNumber . "!"); } } 

您可以使用+运算符连接字符串:

 System.out.println("Your number is " + theNumber + "!"); 

theNumber被隐含地转换为字符串"42"

java中的连接运算符是+ ,而不是.

在开始之前阅读 (包括所有小节)。 试图停止思考PHP的方式;)

为了扩大你在Java中使用字符串的观点 – 字符串的+运算符实际上被(编译器)转换成类似于:

 new StringBuilder().append("firstString").append("secondString").toString() 

这个问题有两个基本的答案:

  1. [简单]使用+运算符(字符串concatination)。 “你的号码是”+号码+“!” (如其他地方所述)
  2. [少简单]:使用StringBuilder(或StringBuffer)。
 StringBuilder value; value.append("your number is"); value.append(theNumber); value.append("!"); value.toString(); 

我建议不要这样堆叠操作:

 new StringBuilder().append("I").append("like to write").append("confusing code"); 

Spaceisavaluablecommodity,asthissentancedemonstrates。

编辑:从java 5开始,字符串concatination操作符被编译器翻译成StringBuilder调用。 正因为如此,上述两种方法都是平等的。 警告:下面的示例1生成多个StringBuilder实例,效率低于下面的示例2

例1

 String Blam = one + two; Blam += three + four; Blam += five + six; 

例2

 String Blam = one + two + three + four + five + six; 

开箱即用,您有三种方法将变量的值注入到String如下所示:

1.最简单的方法

你可以简单地在一个String和任何对象或原始类型之间使用operator + ,它会自动连接String

  1. 在对象的情况下,如果obj对应于Stringnull ”,则String.valueOf(obj)的值为null否则为obj.toString()的值。
  2. 在基本类型的情况下,相当于String.valueOf(<primitive-type>)

null对象的示例:

 Integer theNumber = 42; System.out.println("Your number is " + theNumber + "!"); 

输出:

 Your number is 42! 

null对象的示例:

 Integer theNumber = null; System.out.println("Your number is " + theNumber + "!"); 

输出:

 Your number is null! 

基本类型的示例:

 int theNumber = 42; System.out.println("Your number is " + theNumber + "!"); 

输出:

 Your number is 42! 

2.明确的方式,可能是最有效的方式

您可以使用StringBuilder (或StringBuffer线程安全的过时对象)使用append方法构建您的String

例:

 int theNumber = 42; StringBuilder buffer = new StringBuilder() .append("Your number is ").append(theNumber).append('!'); System.out.println(buffer.toString()); // or simply System.out.println(buffer) 

输出:

 Your number is 42! 

在幕后,这实际上是最近的java编译器如何转换所有使用operator +完成的String连接,与以前的方式唯一的区别在于您拥有完全的控制权

事实上,编译器将使用默认的构造函数,所以默认的容量( 16 ),因为他们不知道什么是最终的String长度,这意味着如果最后的长度大于16 ,容量将是必然的扩展在性能方面有价格。

因此,如果事先知道最终String的大小将大于16 ,那么使用这种方法来提供更好的初始容量会更有效率。 例如,在我们的例子中,我们创建一个长度大于16的String ,所以为了获得更好的性能,它应该被重写为下一个:

优化示例:

 int theNumber = 42; StringBuilder buffer = new StringBuilder(18) .append("Your number is ").append(theNumber).append('!'); System.out.println(buffer) 

输出:

 Your number is 42! 

3.最可读的方式

你可以使用String.format(locale, format, args)或者String.format(format, args)这两个方法来依赖Formatter来构建你的String 。 这允许您通过使用占位符来指定最终String的格式,这些占位符将被参数的值替换。

例:

 int theNumber = 42; System.out.println(String.format("Your number is %d!", theNumber)); // Or if we need to print only we can use printf System.out.printf("Your number is still %d with printf!%n", theNumber); 

输出:

 Your number is 42! Your number is still 42 with printf! 

这种方法最有意思的地方在于,我们清楚地知道最终的String是什么,因为它更容易阅读,所以更容易维护。

java 8的方法:

 StringJoiner sj1 = new StringJoiner(", "); String joined = sj1.add("one").add("two").toString(); // one, two System.out.println(joined); StringJoiner sj2 = new StringJoiner(", ","{", "}"); String joined2 = sj2.add("Jake").add("John").add("Carl").toString(); // {Jake, John, Carl} System.out.println(joined2); 

“+”而不是“”。

使用+来连接字符串。

 "Your number is " + theNumber + "!" 

这应该工作

 public class StackOverflowTest { public static void main(String args[]) { int theNumber = 42; System.out.println("Your number is " + theNumber + "!"); } } 

两个字符串的精确连接操作请使用:

 file_names = file_names.concat(file_names1); 

在你的情况下使用+而不是.

你必须是一个PHP程序员。

使用+号。

 System.out.println("Your number is " + theNumber + "!"); 

在Java中,连接符号是“+”,而不是“。”。

在java中,连接符号是“ + ”。 如果您在使用jdbc时试图连接两个或三个字符串,请使用以下命令:

 String u = t1.getString(); String v = t2.getString(); String w = t3.getString(); String X = u + "" + v + "" + w; st.setString(1, X); 

这里“”仅用于空间。

为了获得更好的性能,请使用str1.concat(str2) ,其中str1str2是字符串变量。

“+”不是“”。

但要小心字符串连接。 这里有一个链接,介绍IBM DeveloperWorks的一些想法。

第一种方法:您可以使用“+”符号连接字符串,但这总是在打印中发生。 另一种方法:String类包含一个连接两个字符串的方法:string1.concat(string2);

 import com.google.common.base.Joiner; String delimiter = ""; Joiner.on(delimiter).join(Lists.newArrayList("Your number is ", 47, "!")); 

这可能是矫枉过正的回答操作的问题,但是了解更复杂的连接操作是很好的。 这个stackoverflow的问题在这个领域普遍的谷歌搜索排名很高,所以很高兴知道。

你可以使用stringbuffer,stringbuilder和前面提到的所有人一样,“+”。 我不确定“+”的速度有多快(我认为这对于较短的字符串来说是最快的),但是更长的时间,我认为builder和buffer是相当的(builder稍微快一些,因为它不同步)。

您可以使用+运算符连接字符串:

 String a="hello "; String b="world."; System.out.println(a+b); 

输出:

hello world.

而已

这里是一个不使用第三个变量来读取和连接2个字符串的例子:

 public class Demo { public static void main(String args[]) throws Exception { InputStreamReader r=new InputStreamReader(System.in); BufferedReader br = new BufferedReader(r); System.out.println("enter your first string"); String str1 = br.readLine(); System.out.println("enter your second string"); String str2 = br.readLine(); System.out.println("concatenated string is:" + str1 + str2); } } 
Interesting Posts