1、在程序中使用this调用本程序的属性:
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
/*
public Person(String name,int age){
name=name;
age=age;
}
这里的本意是想把传递参数中的name值传递给类中的name属性,把参数的age值传递给类中age属性,
运行结果:
name:null age:0
在构造方法"name=name"和"age=age"中的两个name和age都是构造方法中的参数。(就近原则)
*/
}
2、使用this调用构造方法:一个类中有很多构造方法,使用this关键字相互调用。只能放在构造方法的首行。
3、this表示当前对象:当前对象指当前正在调用类中方法的对象,也就是说那个对象调用了类中的方法,
则this就表示那个对象
public class Demo {
public static void main(String[] args) {
Person per1 = new Person("张三", 23);
Person per2 = new Person("张三", 23);
if (per1.compare(per2)) {
System.out.println("两个对象相等!");
} else {
System.out.println("两个对象相等!");
}
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
/**
* 对比String类重写了Object类的equals方法,这里的compare方法类似于是重写了equals方法。
*/
public boolean compare(Person person) {
Person p1 = this;
Person p2 = person;
if (p1 == p2) {
return true;
}
if (p1.getName().equals(p2.getName()) && (p1.getAge() == p2.getAge())) {
return true;
} else {
return false;
}
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
/*
public Person(String name,int age){
name=name;
age=age;
}
这里的本意是想把传递参数中的name值传递给类中的name属性,把参数的age值传递给类中age属性,
运行结果:
name:null age:0
在构造方法"name=name"和"age=age"中的两个name和age都是构造方法中的参数。(就近原则)
*/
}
2、使用this调用构造方法:一个类中有很多构造方法,使用this关键字相互调用。只能放在构造方法的首行。
this调用构造方法时一定要留一个构造方法作为出口,即程序中至少存在一个构造方法不使用this调用其他的构造方法。
一般把无参构造方法作为出口,即在无参构造方法中不再去调用其它构造方法。
3、this表示当前对象:当前对象指当前正在调用类中方法的对象,也就是说那个对象调用了类中的方法,
则this就表示那个对象
public class Demo {
public static void main(String[] args) {
Person per1 = new Person("张三", 23);
Person per2 = new Person("张三", 23);
if (per1.compare(per2)) {
System.out.println("两个对象相等!");
} else {
System.out.println("两个对象相等!");
}
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
/**
* 对比String类重写了Object类的equals方法,这里的compare方法类似于是重写了equals方法。
*/
public boolean compare(Person person) {
Person p1 = this;
Person p2 = person;
if (p1 == p2) {
return true;
}
if (p1.getName().equals(p2.getName()) && (p1.getAge() == p2.getAge())) {
return true;
} else {
return false;
}
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
}
Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。