如何在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()
这个问题有两个基本的答案:
- [简单]使用+运算符(字符串concatination)。 “你的号码是”+号码+“!” (如其他地方所述)
- [少简单]:使用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
和
- 在对象的情况下,如果
obj
对应于String
“null
”,则String.valueOf(obj)
的值为null
否则为obj.toString()
的值。 - 在基本类型的情况下,相当于
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)
,其中str1
和str2
是字符串变量。
“+”不是“”。
但要小心字符串连接。 这里有一个链接,介绍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); } }