Java字符串相加
来源:互联网 发布:虚拟社交网络弊端 编辑:程序博客网 时间:2024/06/15 04:23
Java字符串
一个普通的字符串相加:
javap看一下编译后的结果,可以看到+被转成了StringBuilder的append
一个普通的final字符串相加:
可以看到3个final字符串直接被编译到了变量中
另一个普通的字符串相加:
可以看到构造出了一堆的StringBuilder(goto语句)
一个普通的字符串相加:
public class StringTest { public static void main(String[] args){ String a = "a"; String b = "b"; String c = "c"; String d = a + b + c; System.out.println(d); }}
javap看一下编译后的结果,可以看到+被转成了StringBuilder的append
zeal@zeal-ThinkPad:~/tobenew$ javap -c StringTestPicked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar Compiled from "StringTest.java"public class StringTest { public StringTest(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: ldc #2 // String a 2: astore_1 3: ldc #3 // String b 5: astore_2 6: ldc #4 // String c 8: astore_3 9: new #5 // class java/lang/StringBuilder 12: dup 13: invokespecial #6 // Method java/lang/StringBuilder."<init>":()V 16: aload_1 17: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 20: aload_2 21: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 24: aload_3 25: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 28: invokevirtual #8 // Method java/lang/StringBuilder.toString:()Ljava/lang/String; 31: astore 4 33: getstatic #9 // Field java/lang/System.out:Ljava/io/PrintStream; 36: aload 4 38: invokevirtual #10 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 41: return }
一个普通的final字符串相加:
public class StringTest { public static void main(String[] args){ final String a = "a"; final String b = "b"; final String c = "c"; String d = a + b + c; System.out.println(d); }}
可以看到3个final字符串直接被编译到了变量中
zeal@zeal-ThinkPad:~/tobenew$ javap -c StringTestPicked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar Compiled from "StringTest.java"public class StringTest { public StringTest(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: ldc #2 // String abc 2: astore 4 4: getstatic #3 // Field java/lang/System.out:Ljava/io/PrintStream; 7: aload 4 9: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 12: return }
另一个普通的字符串相加:
public class StringTest { public static void main(String[] args){ final String a = "a"; String b = "b"; for(int i=0; i<5; i++) { b = b + a; } System.out.println(b); }}
可以看到构造出了一堆的StringBuilder(goto语句)
zeal@zeal-ThinkPad:~/tobenew$ javap -c StringTestPicked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar Compiled from "StringTest.java"public class StringTest { public StringTest(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: ldc #2 // String b 2: astore_2 3: iconst_0 4: istore_3 5: iload_3 6: iconst_5 7: if_icmpge 36 10: new #3 // class java/lang/StringBuilder 13: dup 14: invokespecial #4 // Method java/lang/StringBuilder."<init>":()V 17: aload_2 18: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 21: ldc #6 // String a 23: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 26: invokevirtual #7 // Method java/lang/StringBuilder.toString:()Ljava/lang/String; 29: astore_2 30: iinc 3, 1 33: goto 5 36: getstatic #8 // Field java/lang/System.out:Ljava/io/PrintStream; 39: aload_2 40: invokevirtual #9 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 43: return }
1 0
- Java字符串相加
- java字符串相加的解析
- Java中字符串常量相加
- Java中字符串相加和字符串常量相加区别
- Java中字符串相加和字符串常量相加区别
- java 实现 不限长整形字符串 相加
- java关于字符串相加的说法!
- JAVA 两个大字符串数字相加
- Java中的字符串相加,内存怎么分配?
- 字符串相加
- 字符串相加
- 字符串相加
- 字符串相加
- 字符串相加
- JAVA中,字符串相加不一定相等的原因
- Java利用字符串实现整数格式相加求和
- java数据类型补充——字符串和其他类型相加
- asp字符串相加
- 面试积累【记下哪些被虐的细节】
- 判断给定字符串是否为回文串
- 机器学习与计算机视觉的两个网站
- 关于recvfrom接收超时
- PHP CURL 总结
- Java字符串相加
- 最近遇到的之前没遇到的但是很常用的问题(仅供自己记录)
- Android内存进程管理机制
- Leetcode-9. Palindrome Number
- 移动端产品版本更新数据表的设计
- 驱动器属性(GetDriveType函数 和 GetVolumeInformation函数)
- POJ 2034 Anti-prime Sequences DFS+质数
- POJ 1328 Radar Installation
- Apache 与 Nginx 比较