码迷,mamicode.com
首页 > 编程语言 > 详细

java中的this关键字

时间:2015-06-12 15:19:45      阅读:149      评论:0      收藏:0      [点我收藏+]

标签: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

java中的this关键字

标签:this

原文地址:http://hangtiangazi.blog.51cto.com/8584103/1661111

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!