java中字符串加号的实现
2016-07-12 22:31
323 查看
例子展示
public class Test{ public static void main(String[] args){ System.out.println(new String("hello world")+new String("lp")); } }
输出结果hello world lp
实现原理
java中的字符串的相加其实是编译器帮我们转化的,编译器会将字符串相加编译成使用StringBuilder拼接相加的字符串。我们看下使用javap -verbose Test 得到的java字节码。
Code: stack=5, locals=1, args_size=1 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 3: new #3 // class java/lang/StringBuilder 6: dup 7: invokespecial #4 // Method java/lang/StringBuilder."<init>":()V 10: new #5 // class java/lang/String 13: dup 14: ldc #6 // String hello world 16: invokespecial #7 // Method java/lang/String."<init>":(Ljava/lang/String;)V 19: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 22: new #5 // class java/lang/String 25: dup 26: ldc #9 // String lp 28: invokespecial #7 // Method java/lang/String."<init>":(Ljava/lang/String;)V 31: invokevirtual #8 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 34: invokevirtual #10 // Method java/lang/StringBuilder.toString:()Ljava/lang/String; 37: invokevirtual #11 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 40: return
我们看到34和37分别是使用了stringbuilder.append(“hello world”)和stringbuilder.append(“lp”)
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树