Java中的this关键字的使用
在C++中有this指针调用格式是this->,因为java中没有指针,所以在java中将this命名为关键字来使用,主要的作用是为了突出属性或者方法是当前对象的,区分形参与属性,尤其是方法中形参和属性名字相同时,再一个作用是在构造器中(C++中叫构造函数)调用其他的构造器,this(形参列表),通过形参列表的不同调用不同的构造器,也有一些规定,比如一个构造器只能调用一个另外的构造器,this(形参列表)这句代码必须在构造器的第一行等等,还有在对象中如果将对象作为形参传入方法,用可直接用this关键词去代替那个形参,强调是当前对象。如下面的小例子:
Boys类 :
package OOPKeyWords;
public class Boys {
private String name;
private int age;
public Boys() {
}
public Boys(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void Marry(Grils girl)
{
System.out.println("我想娶"+girl.getName());
}
public void shout()
{
if(age>22)
{
System.out.println("你可以去登记结婚了");
}else
{
System.out.println("年龄不够,先谈恋爱");
}
}
}
Grils类:
package OOPKeyWords;
public class Grils {
private String name;
private int age;
public Grils() {
}
public Grils(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void marry(Boys boy)
{
System.out.println("我想嫁给"+boy.getName());
boy.Marry(this);//此处的this指的是娶得当前的女孩
}
/**
*
* @Description 比较两个对象的大小
* @author
* @date 2021年12月16日上午10:07:28
* @param gril
* 正数:当前对象大,负数:当前对象小 0:当前对象和形参对象相同
*/
public int compare(Grils gril)
{
if(this.age>gril.age)
{
return 1;
}
else if(this.age<gril.age)
{
return -1;
}else
{
return 0;
}
}
}
main函数:
package OOPKeyWords;
public class BoyGrilTest {
public static void main(String[] args) {
Boys boy=new Boys("罗密欧",18);
boy.shout();
Grils gril=new Grils("朱丽叶",18);
gril.marry(boy);
Grils gril1=new Grils("祝英台",19);
int compareResult=gril.compare(gril1);//gril是当前对象
System.out.println(compareResult);
}
}
结果:
年龄不够,先谈恋爱 我想嫁给罗密欧 我想娶朱丽叶 -1
其中第三句中朱丽叶就是当前的对象,对应于代码中Grils类中的this关键字,此处两个类中的方法相互以另一个类的对象作为形参,更好的体现了this关键字的使用情况。
