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

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("两个对象不相等!") ;
        }
    }
}










	

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值