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";
有高手来回答吗?
面试题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";
有高手来回答吗?
相关文章推荐
- Java开发人员面试题分析汇总
- JVM_Java之内存分析和String对象
- 深入java String JVM对String对象的连接优化 一(源码分析)
- JAVA面试题解惑系列(二)——到底创建了几个String对象?
- java String.split()函数的用法分析
- java基础面试题:String和StringBuffer的区别
- java String.split()函数的用法分析
- Java中的String为什么是不可变的? -- String源码分析
- 【Todo】Java类面试题分析
- Java StringBuffer & StringBuilder 源码分析
- 关于一道java面试题的分析
- JAVA面试题解惑系列(六)——字符串(String)杂谈
- Java中的String为什么是不可变的? -- String源码分析
- JAVA面试题之String处理--一字符取出重复的字符以及其个数
- JAVA面试题解惑系列(二)——到底创建了几个String对象?
- Java String 类面试题
- 史上最难的一道Java面试题 (分析篇)
- Java之内存分析和String对象
- java面试题十三 string创建了几个对象
- Java String面试题