`

常见Java面试题(二):equals与==

阅读更多

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

 

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()");
}

 A2.输出结果是:

s1 and s2 are equals()

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



 

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

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

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

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面试问题。

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

  • 大小: 50.9 KB
  • 大小: 26.5 KB
分享到:
评论

相关推荐

    4.2019Android面试 常见58题.docx

    Android常见面试题 例如:java中==和equals和hashCode的区别 、ReentrantLock 、synchronized和volatile比较

    Java常见面试题208道.docx

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    Java 最常见的 208 道面试题:第一模块答案

    Java 最常见的 208 道面试题:第一模块答案 JDK 和 JRE 有什么区别? == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则 equals()也一定为 true,对 吗? final 在 java 中有什么作用? java 中的 Math....

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...

    java面试题大全(2012版)

    3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的学生...

    java面试题.docx

    企业常见java面试题,java基础,java进阶 JDK 和 JRE 有什么区别? == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? final 在 java 中有什么作用? java 中操作字符串...

    Java常见笔试、面试题目深度剖析 相等性(==及equals方法)详解

    Java常见笔试、面试题目深度剖析 相等性(==及equals方法)详解

    Java面试题-基础和集合.docx

    通过面试题的逐一解答,读者可以了解到Java语言的一些核心概念,如面向对象的特性、线程安全、性能优化、泛型、自动装箱与拆箱等。此外,文件还详细解释了类型擦除的概念及其优势,以及深浅克隆的区别和实现方式。...

    JAVA面试题 对JAVA面试有帮助!

     第三,Static Nested Class和Inner Class的不同,说得越多越好(面试题有的很笼统)。  第四,&和&&的区别。  这个问得很少。  第五,HashMap和Hashtable的区别。  常问。  第六,Collection和Collections...

    java 面试题 总结

    20、EJB与JAVA BEAN的区别? Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有...

    2018秋招java笔试题-javapass:java深入学习资料集锦

    最最最常见的Java面试题总结 这里会分享一些出现频率极其极其高的面试题,初定周更一篇,什么时候更完什么时候停止。 (为什么 Java 中只有值传递、==与equals、 hashCode与equals) (String和StringBuffer、...

    超级有影响力霸气的Java面试题大全文档

    超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    180多页面试题,前前后后不间断的更新了两年,准备换工作时,总是拿来看看,有比较好的面试题,也不间断的更新,面试题目录如下: 【基础】面向对象的特征有哪些方面 13 抽象 13 继承 13 封装 13 多态性 13 【基础】...

    Java面试宝典-经典

    3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的学生...

    Java面试宝典2010版

    3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的学生...

    java面试宝典2012

    各种java面试题集,面试前必备哦, 1. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 8 2、Java有没有goto? 8 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套...

    java8源码-java-start::seedling::seedling::seedling:学习Java语法过程中的一些案例

    常见面试题总结 (为什么 Java 中只有值传递、==与equals、 hashCode与equals) (String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?、什么是反射机制?反射机制的应用场景有哪些?......) ...

    最新Java面试宝典pdf版

    3、存储过程与触发器必须讲,经常被面试到? 92 4、数据库三范式是什么? 94 5、说出一些数据库优化方面的经验? 95 6、union和union all有什么不同? 96 7.分页语句 97 8.用一条SQL语句 查询出每门课都大于80分的学生...

    毕业设计电商网站源码-JAVA-:JAVA-

    最最最常见的Java面试题总结 这里会分享一些出现频率极其极其高的面试题,初定周更一篇,什么时候更完什么时候停止。 (为什么 Java 中只有值传递、==与equals、 hashCode与equals) (String和StringBuffer、...

Global site tag (gtag.js) - Google Analytics