equal与==使用实例

public class CreateObj {
    int id=0;
    Person person;
    //覆盖默认的构造器
    public CreateObj(int id,Person p){
        this.id=id;
        this.person=p;
    }
    public static void main(String[] agrs){
        CreateObj obj1 =new CreateObj(2,new Person(10));
        CreateObj obj2 =new CreateObj(2,new Person(10));
        CreateObj obj3 =new CreateObj(2,obj1.person);
        //使用“==”比较两个对象的引用——地址值 是否相等:
        System.out.println(obj1==obj2);
        //比较两个实例对象时,无论用“equal”还是用“==”,比较的都是引用,即地址值
        System.out.println(obj1.equals(obj2));
        //比较两个实例对象中的基本数据类型的成员变量
        System.out.println(obj1.id==obj2.id);
        //比较两个实例对象中的引用数据类型的成员变量
        System.out.println(obj1.person==obj2.person);
        System.out.println(obj1.person==obj3.person);
    }
}
class Person{
    int age =0;
    public Person(int age){
        this.age =age;
    }
}

比较结果:

false
false
true
false
true

总结:①每new一个对象,堆中便开辟一块内存用来存储该类实体的地址值,new几个,创建几个,所以地址值皆不同

②比较引用对象时,无论用equal还是==,比较的都是类实体的地址值

时间: 2024-12-14 22:22:31

equal与==使用实例的相关文章

Scalaz(4)- typeclass:标准类型-Equal,Order,Show,Enum

Scalaz是由一堆的typeclass组成.每一个typeclass具备自己特殊的功能.用户可以通过随意多态(ad-hoc polymorphism)把这些功能施用在自己定义的类型上.scala这个编程语言借鉴了纯函数编程语言Haskell的许多概念.typeclass这个名字就是从Haskell里引用过来的.只不过在Haskell里用的名称是type class两个分开的字.因为scala是个OOP和FP多范畴语言,为了避免与OOP里的type和class发生混扰,所以就用了typeclas

Android开发之SpannableString详解

在实际的应用开发过程中经常会遇到,在文本的不同部分显示一些不同的字体风格的信息如:文本的字体.大小.颜色.样式.以及超级链接等.一般情况下,TextView中的文本都是一个样式,对于类似的情况,可以借助SpannableString或SpannableStringBuilder对象来实现以上设置. SpannableString与SpannableStringBuilder都可以将某段文本设置成一个Span,在Android中,Span表示一段文本的效果,例如,链接形式.图像.带背景的文本等.只

Android 使用SpannableString显示复合文本

http://blog.csdn.net/feizhixuan46789/article/details/10334441 http://www.th7.cn/Program/Android/201408/258951.shtml 在实际的应用开发过程中经常会遇到,在文本的不同部分显示一些不同的字体风格的信息如:文本的字体.大小.颜色.样式.以及超级链接等.一般情况下,TextView中的文本都是一个样式,对于类似的情况,可以借助SpannableString或SpannableStringBu

Sonar 规则

bug类型: 1.".equals()" should not be used to test the values of "Atomic" classes. bug 主要 不要使用equals方法对AtomicXXX进行是否相等的判断 Atomic变量永远只会和自身相等,Atomic变量没有覆写equals()方法.2."=+" should not be used instead of "+=" bug 主要 "

mybatis中的mapper接口文件以及example类的实例函数以及详解

##Example example = new ##Example(); example.setOrderByClause("字段名 ASC"); //升序排列,desc为降序排列. example.setDistinct(false)//去除重复,boolean型,true为选择不重复的记录. Criteria criteria = new Example().createCriteria(); is null;is not null; equal to(value);not equ

LINQ To SQL 语法及实例大全

LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select c

Calendar 对象的使用实例

1.Calendar demo例子 JavaCalendar 类时间操作,示范代码. public class CalendarDemo { private static SimpleDateFormat date_format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); public static void main(String[] args) { //获取calendar实例; Calendar calendar = Calend

Redis的make,make test,make install、单机多实例配置,以及API程序写数据!

最近学习王家林老师的大数据蘑菇云行动,要实现将Spark Streaming分析的数据写入到Redis.今天正好开始入手.  一.Ubuntu16安装Redis3.2.1 遇到了不少的问题,其中,make倒是没问题,make test的时候,出现了: !!! WARNING The following tests failed: *** [err]: Slave should be able to synchronize with the master in tests/integration/

实例脚本,判断是否加入开机自启动,服务状态、脚本规范

脚本实例: 判断ntpd服务是否加入开机自启动 #!/bin/bash # Output: # Result must exactly equal to "3:on,5:on|enable" # # Other output is non-compliant. # Confirm OS Version unset OS_VERSION uname -r | grep el5 > /dev/null && OS_VERSION=el5 uname -r | grep