/*
* ==与equals()的区别
* 1.==是关系运算符,equals()是0bject类中定义的方法
* 2.基本数据类型:使用==比较值,无法使用equals()
* 3.引用数据类型:使用==比较内存地址;如果没有重写equals()
* 仍然调用的是Object父类的equals()方法,则比较的是内存地址;
* 如果重写equals()方法,则比较的是值
*
*/
1.String字符串的== 与equals()方法
//String字符串的== 与equals(()方法public class test4 {public static void main(String[] args) {//创建方式:在"字符串池(字符串缓冲池)"中分配空间String s1="让我在看你一看从南到北";String s2="让我在看你一看从南到北";//比较内存地址System.out.println(s1==s2);System.out.println(s1.equals(s2));//创建方式:通过new关键字再heap队中分配新的内存空间String s3=new String("让我在看你一看从南到北");String s4=new String("让我在看你一看从南到北");System.out.println(s3==s4);System.out.println(s3.equals(s4));}}
运行结果:
truetruefalsetrue
2.Integer的== 与equals()方法
public class test5 {public static void main(String[] args) {// 创建方式1:在缓存池中创建,Integer的缓存池范围是-128-127Integer a=125;Integer b=125;//创建方式1:在缓存池中创建.....同上Integer a1=Integer.valueOf(125);Integer b1=Integer.valueOf(125);//创建方式2:通过new关键字再heap队中分配新的内存空间Integer a2=new Integer(125);Integer b2=new Integer(125);//比较内存地址System.out.println("==比较内存地址:"+(a==b));System.out.println("equals比较内容:"+(a.equals(b)));}}
运行结果:
==比较内存地址:trueequals比较内容:true