Java-String字符串相加及拼接
发布时间
阅读量:
阅读量
Java-String字符串相加及拼接
我的博客园: https://www.cnblogs.com/djhzzl/p/14374716.html
字符串相加
String test1 = "test1" ;
String test2 = test1 + "test2" + "test3" ;
System.out.println(test2); //输出test1test2test3
在IDEA中使用+运算符(即" +"),允许实现两个字符串的连接操作。这与示例代码类似,在此过程中系统会自动合并这两部分字符串。然而需要注意的是String对象具有固定长度属性(即不可变长度),因此为了实现这种连接操作就需要创建一个StringBuilder对象来处理字符串连接。
在cmd中使用javap -v 文件名.class 对字节码文件加载运行。


Code:
stack=2, locals=3, args_size=1
0: ldc #2 // String test1
2: astore_1
3: new #3 // class java/lang/StringBuilder
6: dup
7: invokespecial #4 // Method java/lang/StringBuilder."<init>":()V
10: aload_1
11: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
14: ldc #6 // String test2test3
16: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
19: invokevirtual #7 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
22: astore_2
23: getstatic #8 // Field java/lang/System.out:Ljava/io/PrintStream;
26: aload_2
27: invokevirtual #9 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
30: return
在第三行中,在创建了一个StringBuilder对象后,并调用了append()方法以实现字符串拼接功能;随后又调用了toString()方法将拼接结果转换为字符串形式。
效率较低
经观察可知,在频繁地运用加号运算符时(即不断地调用+操作),会导致显著的资源消耗。具体而言,在每一次这样的操作中(即每一次+符号的应用),都需要先创建多个StringBuilder实例(即先生成多个StringBuilder对象),并依次调用append方法(即逐一添加字符到现有对象上)。此外,在每一次操作之后还需生成一个新的String对象来接收结果(即完成一次拼接后需新建一个字符串来保存结果)。因此导致效率低下。
concat()和append()
所以为了高效拼接的内容, 可以直接采用StringBuffer.append() 或者StringBuffer.concat()的方法
System.out.println(test1.concat("test4")); //输出test1test4

由于concat() 方法必须具备两个String对象进行拼接的要求,在这种情况下运行效率非常高。此外,在使用StringBuilder.append()时无需创建新对象而直接追加原有对象,则会导致其运行效率非常高
全部评论 (0)
还没有任何评论哟~
