关于java字符串拼接时jvm的处理

在java语言中,字符串的拼接方式可以是String c=”a”+”b”,也可以是String a=”a”,String b=”b”,String c=a+b,两种拼接方式是不一样的,前者是在编译期就可以确定的值,两个字符串常量组成的也是字符串常量,它会在常量池里面生成三个字符串常量,存在jvm的常量池里,后者在编译器无法确定,是在运行时才能确定,保存在jvm的堆里面,后者在拼接的时候,先在常量池里面生成两个字符串,在执行加号的时候,会从常量池中取出两个常量,在堆中生成两个字符串对象,然后再生成第三个字符串对象来保存两个对象拼接后的值,所以后者一共是两个常量,三个对象。

posted @ 2019-03-23 11:25  ST没有C  阅读(496)  评论(0编辑  收藏  举报