基础篇
1、java中 == 和 equals 的区别?
== 是比较运算符,Equals 是方法
== 在判断基本数据类型的时候,就是判断数值是否相等,比如int 10 和 int 20的时候就是判断10 和20 这两个数是否相等
== 在判断引用数据类型的时候,也就是对象是否相等的时候,判断的是内存地址是否相等,也就是这两个对象是否就是同一个对象。
总结: ==判断基本数据类型的值,判断引用数据类型的内存地址。
Equals是定义在Object类的方法,不同类有不同的实现。
用Integer 和 String这两个阐述一下,从而理解Equals方法的设计思想。
Integer的Equals方法通过三步完成比较:内存地址是否相同; 类型是否相同;数值是否相同;(当判断内存地址一致时就不会再判断后面的两项,当内存地址不同才会判断下一项。)
String的Equals方法通过四步完成比较:内存地址是否相同;类型是否相同;长度是否相同;每个字符是否相同;
总结:Equals方法最终目的是比较内容相同。
2、java中Integer和int有什么区别?
基本类型与引用类型:int是基本数据类型,直接存储数值,而Integer是对象,它的实例是引用类型,存储的是对象的引用。
默认值:int的默认值为0,而Integer的默认值为null。
操作符支持:对于int类型我们可以使用比较操作符==来比较两个变量的值是否相等,而对于Integer对象,使用==比较得到的是两个Integer对象的引用地址是否相等,比较的是两个对象的地址而非真正的数值。如果要比较Integer对象包含的数值是否相等,需要使用equals()方法。
null安全性:int类型的值始终有明确的默认值0,不存在空值。但是Integer类型的值可以为null,因此在使用Integer类型时,需要对null做特殊处理,否则可能会产生`NullPointerException`。
泛型支持:由于Java泛型的设计限制,Java泛型不能用于基本数据类型。这就意味着我们不能使用ArrayList<int>,但是我们可以使用ArrayList<Integer>。
方法支持:Integer类提供了更多的方法,例如将一个字符串转换成整数、将一个整数转换成不同进制的字符串等。这些方法在int类中并不存在。
3、Java的String,StringBuffer,StringBuilder的区别?
4、Java的String的intern方法的原理
从字符串常量池中查询当前字符串是否存在(通过equals判断)。
如果存在,返回常量池中的字符串引用。
如果不存在,把这个String对象引用存到常量池,然后返回这个String对象的引用。
标签:面试题,java,String,int,是否,汇总,Equals,Integer,数据类型 From: https://www.cnblogs.com/JoeYD/p/18168227