标签:this
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
标签:this
原文地址:http://hangtiangazi.blog.51cto.com/8584103/1661111