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关键字的主要内容,如果未能解决你的问题,请参考以下文章