首页 > 技术文章 > String类

superGG 2014-03-20 12:16 原文

Static静态块:静态代码块的作用是完成一些初始化的工作,首先执行静态代码块,然后执行构造方法,
静态代码块在类被加载的时候执行,而构造方法是在生成对象的时候执行;要想调用某个对象来生成对象,
首先需要将类加载到Java虚拟机上(JVM),然后由JVM加载这个类来生成对象

StringPool(字符串池):

例子:String aa = "abc";String bb = "abc";

1)查找StringPool中是否存在"abc"这个对象

不存在:则在StringPool中创建一个"abc"对象,然后将StringPool中的"abc"对象的地址返回回来,
赋给引用变量aa,这样aa就会指向StringPool中的这个"aa"字符串对象

存在:如果存在,则不创建任何对象,直接将StringPool中的这个"abc"对象地址返回给对象,赋给aa对象

例子:String aa = new String("abc"); new 就会创建新的对象(堆)
首先在StringPool中查找有没有"abc"对象

不存在:在StringPool去创建“abc”这个对象,然后在堆中创建一个"abc"字符串对象,然后将堆中的
“abc”对象地址返回回来,赋给aa

存在:则不在StringPool中再去创建“abc”这个对象,直接在堆中创建一个“abc”字符串对象,
然后将堆中的“abc”对象地址返回回来,赋给aa

推荐阅读