Java面向对象基础--this关键字的解析

简介: <p>this关键字的作用:</p> <p>1、表示类中的属性。</p> <p></p> <pre name="code" class="java">class Person{ // 定义Person类 private String name ; // 姓名 private int age ; // 年龄 public Person(String name,int ag

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



目录
相关文章
|
13天前
|
Java
Java中ReentrantLock释放锁代码解析
Java中ReentrantLock释放锁代码解析
25 8
|
18天前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
14 3
|
17天前
|
设计模式 安全 Java
Java并发编程实战:使用synchronized关键字实现线程安全
【4月更文挑战第6天】Java中的`synchronized`关键字用于处理多线程并发,确保共享资源的线程安全。它可以修饰方法或代码块,实现互斥访问。当用于方法时,锁定对象实例或类对象;用于代码块时,锁定指定对象。过度使用可能导致性能问题,应注意避免锁持有时间过长、死锁,并考虑使用`java.util.concurrent`包中的高级工具。正确理解和使用`synchronized`是编写线程安全程序的关键。
|
4天前
|
安全 Java 机器人
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
19 0
|
4天前
|
安全 Java 开发者
Java并发编程:深入理解Synchronized关键字
【4月更文挑战第19天】 在Java多线程编程中,为了确保数据的一致性和线程安全,我们经常需要使用到同步机制。其中,`synchronized`关键字是最为常见的一种方式,它能够保证在同一时刻只有一个线程可以访问某个对象的特定代码段。本文将深入探讨`synchronized`关键字的原理、用法以及性能影响,并通过具体示例来展示如何在Java程序中有效地应用这一技术。
|
6天前
|
Java API 数据库
深入解析:使用JPA进行Java对象关系映射的实践与应用
【4月更文挑战第17天】Java Persistence API (JPA) 是Java EE中的ORM规范,简化数据库操作,让开发者以面向对象方式处理数据,提高效率和代码可读性。它定义了Java对象与数据库表的映射,通过@Entity等注解标记实体类,如User类映射到users表。JPA提供持久化上下文和EntityManager,管理对象生命周期,支持Criteria API和JPQL进行数据库查询。同时,JPA包含事务管理功能,保证数据一致性。使用JPA能降低开发复杂性,但需根据项目需求灵活应用,结合框架如Spring Data JPA,进一步提升开发便捷性。
|
7天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
8天前
|
Java
Java关键字(1)
Java关键字(1)
|
11天前
|
Java
Java 15 神秘登场:隐藏类解析未知领域
Java 15 神秘登场:隐藏类解析未知领域
15 0
|
11天前
|
安全 Java 编译器
接口之美,内部之妙:深入解析Java的接口与内部类
接口之美,内部之妙:深入解析Java的接口与内部类
33 0
接口之美,内部之妙:深入解析Java的接口与内部类

推荐镜像

更多