栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > Java面试题

java字符串笔试面试题深度剖析

Java面试题 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java字符串笔试面试题深度剖析

public static void main(String[] args)
{
String s = new String(“abc”);//执行到这一行时,创建了几个对象?答案:2个对象    String s1 = “abc”;//执行到这一行时,创建了几个对象?答案:没有对象
String s2 = new String(“abc”);//执行到这一行时,创建了几个对象?答案: 1个对象

System.out.println(s == s1);//输出结果是什么?false
System.out.println(s == s2);//输出结果是什么?false
System.out.println(s2 == s1);//输出结果是什么?false}

试题详解: 1.String s = new String(“abc”)执行此句时,首先在String Pool(String池)中查找有没有字符常量”abc”,没有则在String Pool中创建”abc”的对象,当执行new String(“abc”)时则在java的堆中创建一个”abc”对象,而s则是该对象的引用,因此共计创建2个对象。 2.String s1 = “abc”执行此句时,首先还是在String Pool中查找有没有字符串常量”abc”,有则直接将s1作为String Pool中”abc”的一个引用,因此此时没有创建任何对象。 3.String s2 = new String(“abc”)执行此句时,依旧在String Pool中查找有没有字符串常量”abc”,有则不进行再次创建,由于这里用了new关键字(有new就有对象),所有便在java堆中又创建了一个”abc”对象(地址与第一句在堆中创建的地址不同),而s2则是这个对象的引用,因此执行此句时只创建了1个对象。 4.我们知道”==”是判断对象的,因此由于s指向的是java对中的”abc”对象而s1指向的则是String Pool中的”abc”对象,所以输出false。 5.6判断同上。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/263993.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号