您的位置:首页 > 编程语言 > Java开发

java中的this关键字

2015-06-12 09:55 399 查看
1.this是什么?this是一个引用类型,在堆中的每一个java对象上都有this,this保存内存地址指向自身。2.this能用在哪些地方?第一:this可以用在成员方法中.第二:this可以用在构造方法中.语法:this(实参);通过一个构造方法去调用另一个构造方法。目的:代码重用。this(实参);必须出现在构造方法的第一行第三:this不能用在静态方法中。静态方法的执行不需要java对象的存在,直接使用"类名."的方式去访问,this代表的是当前对象,所有不用用在静态方法中。
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;
*/
}

MyDate(int _year,int _month,int _day){
year = _year;
month = _month;
day = _day;
}
/*
this能用在成员方法中。

this就是当前对象.
*/
public class ThisTest02{

public static void main(String[] args){

//创建对象
Employee e = new Employee(7369,"SMITH");

//工作
e.work();
//创建对象
Employee e1 = new Employee(7370,"FORD");
//工作
e1.work();

e.m1();

}

}

class Employee{

//员工编号
int empno;

//员工名
String ename;

//Constructor
Employee(){}

Employee(int _empno,String _ename){
empno = _empno;
ename = _ename;
}

//提供一个员工工作的方法.
//this用在成员方法中,谁去调用这个成员方法,this就代表谁。
//this指的就是当前对象。
public void work(){
System.out.println(this.ename + "在工作");
//System.out.println(ename + "在工作"); //this. 可以省略
}

//成员方法
public void m1(){
this.m2();
m2();
}

//成员方法
public void m2(){
System.out.println("TESTING");
}

}
注意:this不能用在静态方法中。
/*
this不能用在静态方法中.
静态方法的执行根本不需要java对象的存在。直接使用“类名.”的方式访问。
而this代表的是当前对象。所以静态方法中根本没有this
*/
public class ThisTest04{

String str;

//入口
public static void main(String[] args){

Person.m1();

//str是一个成员变量,必须由  引用.   访问
//System.out.println(str);

ThisTest04 tt = new ThisTest04();
System.out.println(tt.str); //null

}

}

class Person{

//Field
String name;

//Constructor
Person(){}

Person(String name){
this.name = name;
}

//静态方法
public static void m1(){

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

//如果要想访问name只能:
Person p1 = new Person("刘德华");
System.out.println(p1.name);
}

}


本文出自 “gaogaozi” 博客,请务必保留此出处http://hangtiangazi.blog.51cto.com/8584103/1661111
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: