http://www.importnew.com/2223.html

ImportNew注: 本文是ImportNew编译整理的Java面试题系列文章之一。你可以从这里查看全部的Java面试系列。

Q2.下面的代码片段的输出是什么?

1
2
3
4
5
6
7
8
Object s1 = new String("Hello");
Object s2 = new String("Hello");
if(s1 == s2) {
  System.out.println("s1 and s2 are ==");
}else if (s1.equals(s2)) {
  System.out.println("s1 and s2 are equals()");
}

1

A2.输出结果是:

s1 and s2 are equals()

可以用下面这个图来解释:

因此,上面的问题考察了面试者对”==” 和 “equals( )”在Java对象上如何应用的理解是否正确。前者比较引用,后者则比较对象中真正的值。

接着还可以有下面的问题:

Q.下面代码片段的输出是什么?

1
2
3
4
5
6
7
8
Object s1 = "Hello";
Object s2 = "Hello";
if (s1 == s2) {
 System.out.println("s1 and s2 are ==");
} else if (s1.equals(s2)) {
 System.out.println("s1 and s2 are equals()");
}

A.答案是:

s1 and s2 are ==

看上去这个答案和对前面一个问题所做的解释似乎有所违背。事实上,这个例子(或者说,规则)比较特殊,是一个典型的flyweight 模式在字符串对象创建中的应用。这个模式通过减少对象的创建来节约内存。String对象会创建一个字符串池(a pool of string),如果当前准备新创建的字符串对象的值在这个池子中已经存在,那么就不会生成新对象,而是复用池中已有的字符串对象。flyweight 模式的精髓就是对象复用。不过,只有采用Object s = “Hello”方式(而非用”new“关键字)声明String对象的时候这个规则才会被应用。

这是一个非常经常被采用的Java面试问题。

更多的Java编程问题和解析:

英文原文: Java Success,编译:ImportNew - 郑雯

译文链接:http://www.importnew.com/2223.html

常见Java面试题 – 第二部分:equals与==相关推荐

  1. 「面试必备」常见Java面试题大综合 马云见了都点赞

    一.Java基础 1.Arrays.sort实现原理和Collections.sort实现原理 答:Collections.sort方法底层会调用Arrays.sort方法,底层实现都是TimeSor ...

  2. 2020最新常见Java面试题及答案汇总

    一.Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java ...

  3. 常见Java面试题 – 第三部分:重载(overloading)与重写(overriding)

    ImportNew注: 本文是ImportNew编译整理的Java面试题系列文章之一.你可以从这里查看全部的Java面试系列. 这篇文章介绍的常见面试题是关于重载(overloading)方法和重写( ...

  4. 常见Java面试题之静态变量和实例变量的区别

    静态变量和实例变量的区别有哪些? 静态变量和实例变量可能大多数同学用的比较多,但是相关阐述并不是很常见,尤其对新手同学可以不能清楚表达. 静态变量和实例变量也是最经常遇到的一个基础java面试题,不管 ...

  5. 小猿圈之常见java面试题总结,你学会了吗?

    今年的6月份又到了,又是一年一度的毕业季,但是你真的做好准备了吗?.应届毕业生很多,怎么让你自己在这群人中脱颖而出呢?那你就要做万分的准备,不打没准备的仗,下面小猿圈java讲师为你总结了常见的jav ...

  6. 2021年面试,整理全网初、中、高级常见Java面试题

    面试题答案私信[面试]即可获取,500+道面试题.内容中包含基础.集合.并发.JVM.Spring.Spring MVC.Spring Boot.Spring Cloud.Dubbo.MySQL.Re ...

  7. 2021年面试,整理全网初、中、高级常见Java面试题附答案

    此为部分面试题包含答案,更多面试题见微信小程序 "Java精选面试题",3000+道面试题.内容持续更新中包含基础.集合.并发.JVM.Spring.Spring MVC.Spri ...

  8. 常见Java面试题之和的区别?

    &和&&区别分析 &运算符有两种用法:(1)按位与:(2)逻辑与.&&运算符是短路与运算.逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端 ...

  9. 常见Java面试题 程序中如何决定使用 HashMap 还是 TreeMap?

    回答方式: 对于在Map中插入.删除和定位元素这类操作,HashMap是最好的选择. 然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择. 基于你的collection的大小, ...

最新文章

  1. WPF: RenderTransform特效
  2. 第七天2017/04/14(引用与const、C++基本知识)
  3. 用顺序栈实现十进制向二进制转化
  4. 微软希望每个人有自己的人工智能朋友
  5. 静态内部类实现 单例模式
  6. caffe的python接口学习(2):生成solver文件
  7. 调用http_Go教程34:Go微服务间Http+Json调用
  8. JavaScript 函数看代码写结果
  9. Rust : Tonic 基于Rust的gRPC实现
  10. 【路径规划】基于matlab GUI改进的遗传算法机器人栅格地图避障路径规划【含Matlab 703期】
  11. 程序员中的明星,超模or女团都是程序媛
  12. C语言实现日历时间转换为秒(mktime)
  13. 凌恩客户文献|《ISME》解析土壤侵蚀对微生物群落结构以及网络功能复杂性影响
  14. 【JVAV】—继承、多态、抽象类
  15. 连载:中国最早的一代官派留学生--留美幼童 (结尾)
  16. java开发一个简单的通讯录
  17. 当Facebook、谷歌等成为数据泄露大头时,它们如何改变?(上)
  18. 2015美国计算机研究生就业,2015年美国计算机专业研究生排名
  19. Android背光系统实现
  20. 计算机的0和1是怎么变成我们屏幕上看到的图片、视频和声音的

热门文章

  1. 七十一、Python | Leetcode字符串系列(上篇)
  2. 让机器学会看图说话:Image Caption任务最新综述
  3. 从易到难,针对复杂问题的无监督式问题分解方法
  4. 从语言模型到Seq2Seq:Transformer如戏,全靠Mask
  5. 直播报名 | CUDA优化:高性能库cuBLAS使用指南
  6. 征文通知 | 第十八届中国计算语言学大会(CCL 2019)论文提交截止时间推迟
  7. AI 引领产业变革:相关岗位起薪33w
  8. 图像分割综述:FCN、U-Net、PSPNet、DeepLab
  9. 筛法求素数 素数打表
  10. MySQL---第07章_单行函数