zoukankan      html  css  js  c++  java
  • this关键字的解析

    this关键字的作用:

    1、表示类中的属性。

    class Person{		// 定义Person类
    	private String name ;		// 姓名
    	private int age ;			// 年龄
    	public Person(String name,int age){	// 通过构造方法赋值
    		this.name = name ; // 为类中的name属性赋值
    		this.age = age ;// 为类中的age属性赋值
    	}
    	public String getInfo(){	// 取得信息的方法
    		return "姓名:" + name + ",年龄:" + age ;
    	}
    };
    public class ThisDemo02{
    	public static void main(String args[]){
    		Person per1 = new Person("张三",33) ;	// 调用构造实例化对象
    		System.out.println(per1.getInfo()) ;	// 取得信息
    	}
    };


    2、使用this调用本类的构造方法。

    构造方法间可以互相调用,使用this(参数)的形式完成。

    注意:在使用this关键字调用其他构造方法时,this()调用构造方法的语句只能放在构造方法的首行。

    在使用this调用本类中的其他构造方法是,至少有一个构造方法是不用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 ThisDemo05{
    	public static void main(String args[]){
    		Person per1 = new Person("张三",33) ;	// 调用构造实例化对象
    		System.out.println(per1.getInfo()) ;	// 取得信息
    	}
    };


    3、表示当前对象。

    使用this和引用传递比较两个对象是否相等。

    String本身是一个类,进行相等的比较,则要判断内容,使用equals()方法来完成。

    age是int类型,使用 == 即可。

    地址相等,则两个对象相等。地址如果不相等,一次判断属性内容是否相等。

    class Person{		// 定义Person类
    	private String name ;	// 姓名
    	private int age ;		// 年龄
    	public Person(String name,int age){
    		this.setName(name) ;
    		this.setAge(age) ;
    	}
    	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 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 ThisDemo08{
    	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("两个对象不相等!") ;
    		}
    	}
    };



  • 相关阅读:
    怎么防止重复提交
    JSP三大指令是什么?
    python中字符串的编码和解码
    什么是 JavaConfig?
    Spring Boot 有哪些优点?
    如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
    Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?
    如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些?
    学习笔记——命令模式Command
    学习笔记——中介者模式Mediator
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3303851.html
Copyright © 2011-2022 走看看