this关键字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了this关键字相关的知识,希望对你有一定的参考价值。

/*

this关键字

1.this是什么?

this是一个引用类型,在堆中的每个java对象上都有this,this保存的内存地址指向自身

2.this能用在哪些地方?

第一:this可以用在成员方法中


第二:this可以用在构造方法中

语法:this(实参)

通过一个构造方法去调用另一个构造方法

目的:代码重用

this(实参)必须出现在构造方法的第一行

*/

public class ThisTest01

{

public static void main(String[] agrs)

{

//1.创建对象

MyDate d1 = new MyDate(2008,8,8);

MyDate d2 = new MyDate();

System.out.println(d1.year + " 年 " + d1.month + " 月 " + d1.day + " 日 ");


System.out.println(d2.year + " 年 " + d2.month + " 月 " + d2.day + " 日 ");

}

}


//日期

class MyDate

{

//Field

int year;

int month;

int day;


//Constructor

//需求:在创建日期对象时,默认日期是1970-1-1

MyDate()

{

this(1970,1,1);

/*

this.year = 1970;

this.month = 1;

this.day = 1;

*/


}


//Constructor

MyDate(int _year,int _month,int _day)

{

year = _year;

month = _month;

day = _day;

}

}


public class ThisTest02

{

public static void main(String[] args)

{

//创建对象

Employee e1 = new Employee(10001,"GHOSTS");


e1.work();

e1.m1();

}

}


class Employee

{

//员工编号

int enumber;

//员工名

String ename;


//Constructor

Employee()

{


}


Employee(int _enumber,String _ename)

{

enumber = _enumber;


ename = _ename;


}

//提供员工工作方法

//this用在成员方法中,谁去调用成员方法,this就代表谁

//this指的就是当前对象

public void work()

{

System.out.println(ename + " 在工作");//<=>System.out.println(this.ename + " 在工作");

}

//成员方法

public void m1()

{

this.m2();

m2();


}

//成员方法

public void m2()

{

System.out.println("TESTING");

}

}



/*

this可以用来区分成员变量和局部变量

*/

public class ThisTest03

{

public static void main(String[] args)

{

Manage m1 = new Manage("KING");


Manage m2 = new Manage();


m2.SetName("张三");


System.out.println(m1.GetName());


System.out.println(m2.GetName());

}

}


class Manage

{

//Field

private String name;

//Constructor

Manage()

{


}


Manage(String name)

{

this.name = name;

}


//Method

public void SetName(String name)

{

this.name = name;


}


public String GetName()

{

return name;

}

}


/*

this不能用在静态方法中

1.静态方法的执行根本不需要对象的存在,直接使用类名.方法的方式

2.而this代表的是当前对象,所以静态方法中根本没法使用

*/

public class ThisTest04

{

String str;

public static void main(String[] args)

{

Person.m1();

//System.out.println(str);

ThisTest04 t1 = new ThisTest04();

System.out.println(t1.str);


}

}


class Person

{

//Field

String name;


//Constructor

Person()

{


}


Person(String name)

{

this.name = name;

}

//静态方法

public static void m1()

{

//System.out.println(this.name);

Person p1 = new Person("刘德华");

System.out.println(p1.name);


}



}


以上是关于this关键字的主要内容,如果未能解决你的问题,请参考以下文章

this关键字的相关应用

如何理解 JavaScript 中的 this 关键字

this关键字

this关键字

this关键字

this关键字和super关键字