this关键字知识总结

学习资源:B站韩顺平老师Java入门教学

代码示例1

public class This01 {
	public static void main(String[] args) {
		Dog d1 = new Dog("小黄", 3);
		d1.info();
		System.out.println("对象d1的hashcode=:" + d1.hashCode());
		System.out.println("---------------");
		Dog d2 = new Dog("小花", 2);
		d2.info();
		System.out.println("对象d2的hashcode=:" + d2.hashCode());
	}
}
class Dog {
	int age;
	String name;
        //  根据变量的作用域原则,方法中的name与age实际指的是局部变量而不是成员变量	
        //	public Dog(String name, int age) {
        //		name = name;
        //		age = age;
        //	}
        // java虚拟机会给每个对象分配this,代表当前对象
	public Dog(String name, int age) {
		this.name = name;
		this.age = age;
		System.out.println("构造器中:this.hashcode=:" + this.hashCode());
	}
	public void info() {
		System.out.println("狗狗名字叫:" + this.name + "\n年龄:" + this.age);
		System.out.println("成员方法中:this.hashcode=:" + this.hashCode());
	}
}

代码示例2

public class ThisDetail {
	public static void main(String[] args) {
		T t1 = new T();
		t1.f2();
		System.out.println("---------------");
		T t2 = new T(10);
		System.out.println("---------------");
		T t3 = new T("小明", 10);
		System.out.println(t1.name + "==" + t1.age);
		System.out.println(t2.name + "==" + t2.age);
		System.out.println(t3.name + "==" + t3.age);
	}
}
class T {
	int age;
	String name;
	// 细节1:访问成员方法的语法:this.方法名(参数列表);
	public void f1() {
		System.out.println("f1()方法..");
	}
	public void f2() {
		System.out.println("f2()方法..");
		// 在f2()中调用f1()
		// 第一种方法
		f1();
		// 第二种方法
		this.f1();
	}
	// 细节2:调用构造器语法:this(参数列表); 只能在构造器中使用,只能放在构造器的首句
	T() {
		this.name = "小李";
		this.age = 18;
		System.out.println("调用构造器1");
	}
	T(int age) {
		this();
		this.age = age;
		System.out.println("调用构造器2");
	}
	T(String name, int age) {
		this(age);
		this.name = name;
		System.out.println("调用构造器3");
	}
}

注意事项与使用细节

  1. this关键字可以用来访问本类的属性、方法、构造器;
  2. this用于区分当前类的属性和局部变量;
  3. 访问成员方法的语法:this.方法名(参数列表);
  4. 访问构造器语法:this(参数列表); 注意:只能在构造器中使用,且需要为构造器中的首行;
  5. this不能在类定义的外部使用,只能在类定义的方法中使用