浅谈 ==和equals的区别,this和super的用法

来源:互联网 发布:java 字符串排序 编辑:程序博客网 时间:2024/05/18 10:11


package 方法;

/**
 * ==和equals的区别
 * this和super的用法
 * @author Administrator
 *
 */
public class July25 {

     ==和equals的区别
/* 在讲==和equals之前,我先讨论一下“=”的用法,“=”在java中是赋值号,eg:int a=1;
这里是吧数值为1的常量赋值给定义为整型的变量a中,其中a在堆里已经开辟了一个内存。赋值的意思
就是把1放大到了这个堆内的内存中。
 1.==
 基本数据类型:是比较两个基本数据类型它们值之前是不是相等,eg:int i=1;int j=1;i==j?//true;
 引用数据类型:比较其中的内存地址是不是相等,eg:Person p1=new Person();Person p2=new Person();
 p1==p2//false;
 在这里要特别谈一下我的理解:当new一个对象p1的时候,在堆内存中已经为p1开辟了一个连续存储单元,此时p1的存储的地址在栈
 中也有与之对应的地址,同理在new对p2的时候,在堆内存中也为p2开开辟了一个连续的存储单元,此时p2的存储的地址在栈中
 与之对应,p1和p2它们之前在栈中的地址是不一样的;因此用==比较p1和p2的地址是否相同,结果是错误的(false)。
 2.equals
 epuals比较的是两个对象的内容是不是相等;eg:String s1="abc";String s2="abc";//true
 很明显既然比较的是对象s1和s2两个对象中内容是一样的。
 
     this和super的用法
 this表示当前对象,也就是当前类对象,super表示当前类的父类;
 eg:1.你定义一个新的类:A,这个A继承了类B,也就是说B是A的父类。那么如果A中 有个方法:arr();B中也有个方法: arr();
                        那么在A 中用this.arr()调用的就是A中定义的方法,而super.arr()调用的就是A的父类B中定义的方法arr();
                 
    2.在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,new这个子类的实例对象后。
              使用super来引用父类对象,使用this引用当前对象。
     eg:2
  public class F{//定义父类

     public void s(){//定义父类方法s
     }
  }
  public class K extends F{//定义子类K,继承父类F
     public void s(){//定义子类方法s,覆盖父类s
     }
     public void k2(){
      super.s();//通过super,指明调用父类的方法s
      this.s();//通过this,指明调用当前类的方法s
     }
        } */
 

原创粉丝点击