String内部的理解

今天在看java编程思想的时候,字符串这一节有不一样的理解,记下来,做为积累

我们都知道String是不可变的,只要你创建了一个String,里面的东西放了之后就不能改变,所以在字符串增加上有一个问题,用String,StringBuilder,StringBuffer哪个

1.其实在有些String赋值时,底层是StringBuilder,所以在我们用的时候我们需要考虑怎样他的效率快,不浪费空间。

String中有两个操作符重载:+,+=。如String S=“aaa”+"accc"; String s2+=“ss”;String对象是不可变的。String类中每一个看起来会修改String值的方法实际上都是创建了一个全新的String对象来包含修改后的字符串内容,而最初的String对象则丝毫未动。

2.如果在循环中使用字符串的追加,建议使用StringBuilder。

3.这里我学会了javap,一个java自带的反编译器,在命令框中先javac 你当前的java文件,之后在再javap -c 当前的已经编译了的class文件,你就会看见反编译之后的汇编 语句,这基本已经接近了最原始的语言,在这里性能问题完全可以被看出来,你会发现,当你用String 去循环追加字符串时,它是用来StringBuilder的,并且每次循环都会创建一个StringBuilder,很浪费,但对于StringBuilder循环追加字符串时,它还是只创建了一个对象,相对是比较好的。



你可能感兴趣的:(java)