Java 几道常见String面试题
来源:互联网 发布:李涛疯狂淘宝怎么样 编辑:程序博客网 时间:2024/05/18 21:47
转载自:http://blog.csdn.net/Sqirt/article/details/72765071
本篇谈谈几个常见的java关于 String的面试题。
(1)
String s1="abc";String s2="abc";System.out.println(s1==s2);System.out.println(s1.equals(s2));/*output:truetrue*/本题主要考察对于java常量池的理解。java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,常量池存在于方法区中。根据代码顺序,先在常量池中创建”abc“,并指向s1,而后在创建s2时,由于常量池中已经存在”abc“,只需指向s2就可以,而不需要再创建。”==”在这里比较的是对象引用,故结果为”true”,String 中的equals方法经过重写后操作为“比较此字符串与指定的对象。当且仅当该参数不为 null,并且是表示与此对象相同的字符序列的 String 对象时,结果才为 true”。很明显,s1和s2的字符序列相同,故而结果为true。
(2)“ String s1=new String(“abc”)”语句创建了几个对象?
该语句首先String s1是声明,new String(“abc”)先在常量池中查找,若没有则创建“abc”,而后通过new在堆内存中创建对象,把“abc”拷贝赋值。String 定义为初始化一个新创建的 String 对象,表示一个与该参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的一个副本。故创建常量池和堆内存中两个对象,两个对象的地址值不一样。
(3)
String s1=new String("abc");String s2="abc";System.out.println(s1==s2); System.out.println(s1.equals(s2));/*output:falsetrue*/由(2)分析可知s1在堆内存中,s2在常量池中,故结果为false,true
(4)
String s1="a"+"b"+"c";String s2="abc";System.out.println(s1==s2);System.out.println(s1.equals(s2));/*output:truetrue*/本题主要考察java中常量优化机制,编译时s1已经成为“abc”在常量池中查找创建,s2不需要再创建。
(5)
String s1="ab";String s2="abc";String s3=s1+"c";System.out.println(s3==s2);System.out.println(s3.equals(s2));/*output:falsetrue*/Java 语言提供对字符串串联符号(”+”)和其他对象到字符串的转换的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的,字符串转换是通过 toString 方法实现的。在本题中,先在常量池中创建”ab“,地址指向s1,再创建”abc”,指向s2。对于s3,先创建StringBuilder(或 StringBuffer)对象,通过append连接得到“abc”,再调用toString()转换得到的地址指向s3。故(s3==s2)为false.
阅读全文
0 0
- Java 几道常见String面试题
- Java 几道常见String面试题
- Java 几道常见String面试题
- 几道常见的面试题(Core Java)
- 常见的几道关于递归的JAVA面试题
- Java String常见面试题汇总
- 【java】String类常见面试题
- Java-String类常见面试题
- String常见面试题
- 几道JAVA面试题
- String类常见面试题
- Java中String类的常见面试题
- Java中String类的常见面试题
- Java常见面试题
- java常见面试题
- java常见面试题
- java常见面试题
- java常见面试题
- 旋转数组
- 读后感---5w
- HTML中 用CSS样式实现 文字两边添加水平线
- ExtentReports实现
- Zabbix监控平台部署+监控客户端
- Java 几道常见String面试题
- 复杂网络问答
- TP5使用phpmailer出现的错误
- Spring Boot对dubbo的整合
- ubuntu 16.04 上安装支持GPU的caffe
- unity3d之3D贪吃蛇
- 欢迎使用CSDN-markdown编辑器
- Android属性动画之 一、 ValueAnimator
- nginx 负载均衡个服务器之间文件共享