java 面试题 string

1.内存解析

栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
堆:存放所有new出来的对象。
常量池:存放字符串常量和基本类型常量(public static final)。

2.字符串创建

String a = "a";

创建一个字符串,在常量池中创建"a";

String b = new String("b");

创建两个字符串,先在堆中创建字符串"b";再在常量池中创建字符串"b";

String c = new String("e"+"f");

创建两个字符串,构造器里的("e"+"f")在编译期就已经做了处理,即相当于("ef"),

先在堆中创建字符串"ef";再在常量池中创建字符串"ef";

posted @ 2018-02-27 10:21  坏笑的眼镜男  阅读(142)  评论(0)    收藏  举报