黑马程序员技术交流社区

标题: ==与equals使用总结 [打印本页]

作者: ssx0101    时间: 2012-11-17 18:27
标题: ==与equals使用总结
本帖最后由 曹自祥 于 2012-11-19 16:21 编辑
  1. package pt;

  2. public class Lei {

  3.         /**
  4.          * @param args
  5.          * ==是比较栈内的基本类型变量值和对象引用(类似于C语言的指针)
  6.          * equals是比较栈内对象引用指向的堆内对象或数据池常量
  7.          */
  8.         public static void main(String[] args) {
  9.                 int i1=1;
  10.                 int i2=1;
  11.                 int i3=i1;
  12.                 String s1="abc";
  13.                 String s2=s1;
  14.                 String s3=new String("abc");
  15.                 String s4=s3;
  16.                 System.out.println(i1==i2);//基本类型比较, 栈内值相等,true
  17.                 System.out.println(i1==i3);//基本类型计较,栈内值相等,true
  18.                 System.out.println(s1==s2);//对象引用比较,栈内值相等,true
  19.                 System.out.println(s1.equals(s2));//对象引用指向的数据池常量比较,数据池常量相等,true
  20.                 System.out.println(s3==s4);//对象引用比较,栈内值相等,true
  21.                 System.out.println(s3.equals(s4));//对象引用指向的堆内对象比较,堆内对象相等,true
  22.                 System.out.println(s1==s3);//对象引用比较,栈内值不相等,false
  23.                 System.out.println(s1.equals(s3));//对象引用指向的数据常量和堆内对象比较,数据常量和对象相等,true
  24.         }

  25. }
复制代码
欢迎建议和意见!
作者: 潘天功    时间: 2012-11-18 12:21
总结的很好!

==如果比较基本数据类型比较的是其值是否相等,如何比较引用数据类型则比较的是其地址是否相等。
equals比较的是两个引用类型地址指向的内容是否相同。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2