您的位置:首页 > 职场人生

Java核对内库,String面试题分析

2017-06-05 09:51 148 查看
贝壳信息 2017-06-02 17:35

面试题1:下列代码分别创建了几个String对象?

1、Sting str1 = "ABCD";

2、String str2 = new String("ABCD");

首先要了解常量池:专门存储常量的地方,都指的是方法区中。

编译常量池:把字节码加载进JVM的时候,存储的是字节码相关的信息。

运行常量池:存储常量数据。



内存图
那么我们得到结论:

第1行代码:最多创建一个String对象,最少不创建String对象;如果常量池中,已经存在“ABCD”,那么str1直接引用,此时不创建String对象,否则,先在常量池先创建“ABCD”内存空间,再引用。


第2行代码:最多创建两个String对象,至少创建一个String对象,new关键字,绝对会在堆空间创建内存区域,所以至少创建一个String对象。

面试题2:说说下面String对象,彼此之间是否相等?

String str1 = "ABCD";

String str2 = "A"+"B"+"C"+"D";

String str3 = "AB"+"CD";

String str4 = new String("ABCD");

String temp = "AB";

String str5 = temp + "CD";

String str6 = getXx()+"CD";

有高手来回答吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: