码迷,mamicode.com
首页 > 其他好文 > 详细

this关键字的使用8/22

时间:2017-08-22 23:16:07      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:int()   返回   一个个   back   set   null   使用   输出   方法调用   

实质就是:this代表当前对象
目录:
  1.this(name) 调用同一个类中参数为
   public Person(String name)这个构造方法
2.this.say() 同一个类中,某一个方法调用非static的say()方法
3.this.name //当前对象的name属性
4.比较两个对象是否相等 first:进行地址比较 second:进行内容比较


class Person {
    private String name;
    private int age;
    /*至少保证一个没有this调用构造方法,保证递归调用的出口*/
    public Person() {
        System.out.println("*** 一个新的Person类对象被实例化******");
    }

    public Person(String name) {
        this(); // 调用无参构造
        this.name = name;
    }

    public Person(String name, int age) {
        this(name); // 调用有一个参数的构造,这句话调用的是灰色部分的函数
        this.age = age;
    } // setter、getter略
    
     
    /*自己写的*************************/
    public Person(double haha){
        System.out.println("只进行输出操作");
    }
    public Person(int age){
        this(10.21);
        this.age = 10;
        this.name="lcy";
    }
    /********************************/
    
    public String getInfo() {
        return "姓名:" + this.name + ",年龄:" + this.age;
    }
}

public class Test {
    public static void main(String args[]) {
        Person per = new Person("张三", 20);
        System.out.println(per.getInfo());
        
        *** 一个新的Person类对象被实例化******
        姓名:张三,年龄:20
        
        Person per1 = new Person("张四");
        System.out.println(per1.getInfo());
        
        *** 一个新的Person类对象被实例化******
        姓名:张四,年龄:0
        
        Person per2 = new Person(100000000);
        System.out.println(per2.getInfo());
        
        只进行输出操作
        姓名:lcy,年龄:10
    }
}
/**  相互调用构造方法在new对象的时候
    构造方法:调用其他构造使用“this()”调用。
    例如:现在一个类之中存在了三个构造方法(无参、有一个参数、有两个参数),
    但是不管使用何种构造方法,都要求在实例化对象产生的时候输出一行提示信息:
    “一个新的类对象被实例化”(假设这个信息等于50行代码)
 */
_________________________________________________________
this表示当前对象
当前对象指的是当前正在调用本类方法的操作对象,下面首先来验证一下。
class Demo {
    private int filed =100;
    public void say(){
        System.out.println(123456);
    }
    public void print() {
        System.out.println("当前对象:" + this);
        this.say();
        System.out.println(this.filed);
    }
}

public class Test {
    public static void main(String args[]) {
        Demo demo1 = new Demo();
        Demo demo2 = new Demo();
        System.out.println(demo1);
        demo1.print();
        System.out.println(demo2);
        demo2.print();
        
    }
}

Demo@2a139a55
当前对象:Demo@2a139a55
123456
100

Demo@15db9742
当前对象:Demo@15db9742
123456
100



程序中Person类中定义了一个compare方法,此方法的主要功能就是专门完成两个对象的比较操作,
在比较时,首先进行地址的比较,如果两个对象的地址一样,则肯定是同一个对象,
而如果地址不相等,则将一个个属性依次进行比较。对象比较操作在开发中是一个重要的概念,要重点掌握
class Person {
  private String name ;
  private int age ;
  public Person(String name,int age) {
  this.name = name ;
  this.age = age ;
}
// 一个类可以接收本类引用
// 接收完成之后可以直接调用本类中的私有操作
public boolean compare(Person per) {
if (per == null) {
return false ; // 直接返回false
}
if (this == per) { // 地址相同
return true ;
}
// 这样一来在compare()方法之中有两个对象:传入的Person,另外一个是this
if (this.name.equals(per.name)
&& this.age == per.age) {
return true ;
}
return false ; //其他情况
}
public void setName(String name) {
this.name = name ;
}
public void setAge(int age) {
this.age = age ;
}
public String getName() {
return this.name ;
}
public int getAge() {
return this.age ;
}
}
public class TestDemo { public static void main(String args[]) { Person per1 = new Person("张三",20) ; Person per2 = new Person("张三",20) ; if (per1.compare(per1)) { System.out.println("是同一个对象。") ; } else { System.out.println("不是同一个对象。") ; } } }

 

 

 



 

this关键字的使用8/22

标签:int()   返回   一个个   back   set   null   使用   输出   方法调用   

原文地址:http://www.cnblogs.com/cs-lcy/p/7413826.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!