this关键字的作用 使用this调用其他构造方法 使用this表示当前对象

来源:互联网 发布:施工软件哪个好 编辑:程序博客网 时间:2024/05/07 06:44
package yyy;   //使用this调用本类中的成员变量和成员方法//使用this返回当前对象的引用      //1.可以使用this调用本类的构造方法        //没有使用this public class  Testc{    public static void main(String[] args) {        Person per=new Person();        System.out.println(per.getInfo());    }}class Person {    private String name;// 定义name属性    private int age;// 定义age属性    public Person(){        System.out.println("新对象实例化");    }    public Person(String name){         System.out.println("新对象实例化");         this.name=name;    }    public Person(String name,int age){        System.out.println("新对象实例化");        this.name=name;        this.age=age;    }    public String getInfo() {        return "姓名:" + this.name + ",年龄:" + this.age;    }}//使用this      1、在使用this关键字调用其他构造方法的时候,this语句只能放在构造方法的首行。        // 2、在使用this调用本类的其他构造方法的时候,至少有1个构造方法不能用this调用,否则会出现递归调用错误。class Person{// 定义Person类    private String name ;// 姓名    private int age ;// 年龄    public Person(){// 无参构造        System.out.println("新对象实例化") ;    }    public Person(String name){        this() ;// 调用本类中的无参构造方法        this.name = name ;    }    public Person(String name,int age){// 通过构造方法赋值        this(name) ;// 调用有一个参数的构造方法        this.age = age ;// 为类中的age属性赋值    }    public String getInfo(){   // 取得信息的方法return "姓名:" + name + ",年龄:" + age ;    }}public class Testc{    public static void main(String args[]){        Person per1 = new Person("张三",33) ;// 调用构造实例化对象        System.out.println(per1.getInfo()) ;// 取得信息    }}//this表示当前对象  ,表示正在调用方法的对象   class Person {  public String getInfo() {  System.out.println("Person类 --> " + this);// 直接打印this    return null ;// 此处返回null,为的是让语法不出错         }}public class Testc {public static void main(String[] args) {Person per1 = new Person() ;Person per2 = new Person() ;System.out.println("MAIN方法 --> " + per1);// 直接打印对象per1.getInfo() ;System.out.println("--------------------------") ;System.out.println("MAIN方法 --> " + per2);// 直接打印对象per2.getInfo() ;}}//this作为返回值//当this作为对象的默认引用使用时,程序可以像访问普通引用变量一样来访问这个this引用,//甚至可以把this当成普通方法的返回。class Person {    int age;    public Person grow(){        age++;        return this;    }   }public class Testc{public static void main(String[] args){       Person per = new Person();       per.age = 100;       per.grow().grow();  //可以连续调用同一方法       System.out.println("age属性值是:" + per.age);  }}//对象比较//生成两个对象,当两个对象中的姓名和年龄完全相等时,则认为对象是相等的。//String本身就是一个类,若要比较相等,则要判断内容是否相同,必须用equals()方法,//而age是int型,所以直接用“==”完成。public class Testc{    public static void main(String args[]){        Person per1 = new Person(“张三”,30) ;         Person per2 = new Person(“张三”,30) ;          // 直接在主方法中依次取得各个属性进行比较        if(per1.getName().equals(per2.getName())&&per1.getAge()==per2.getAge()){            System.out.println("两个对象相等!") ;        }else{            System.out.println("两个对象不相等!") ;        }    }}//如果地址相等,则两个对象相等,如果地址不相等,则依次判断每个属性的内容是否相等来判断两个对象是否相等。public boolean compare(Person per){// 调用此方法时里面存在两个对象:当前对象、传入的对象    Person p1 = this ;// 当前的对象,就表示per1    Person p2 = per ;// 传递进来的对象,就表示per2    if(p1==p2){// 判断是不是同一个对象,用地址比较    return true ;    }    // 之后分别判断每一个属性是否相等    if(p1.name.equals(p2.name)&&p1.age==p2.age){        return true ;// 两个对象相等    }else{        return false ;// 两个对象不相等    }}public class Testc{    public static void main(String args[]){        Person per1 = new Person(“张三”,30) ;// 声明两个对象,内容完全相等        Person per2 = new Person(“张三”,30) ;// 声明两个对象,内容完全相等        // 直接在主方法中依次取得各个属性进行比较        if(per1.compare(per2)){            System.out.println("两个对象相等!") ;        }else{             System.out.println("两个对象不相等!") ;        }    }}

原创粉丝点击