this,static关键字

this关键字

1:在类的方法定义中使用的this关键字代表使用该方法的对象的引用
(对哪个对象调用的方法,this指的就是谁)。
2:当必须指出当前使用方法的对象是谁要使用this。
3:有时使用this可以处理方法中非成员变量和参数重名的情况。
4:this可以看做是一个变量,它的值是当前对象的引用。

实例:

public	class	Leaf{
	int	i = 0 ;		//成员变量。
	Leaf ( int	i ) { this.i = i ; }		//构造方法。另:此处有两个变量 “i”,此处的“i”是形参,无法区分,遵循就近声明的原则,即大括号中的第二个“i”是形参,而“this.i”中的“i”是成员变量。(即第三条)
	Leaf increament () {		//返回值是Leaf类型。
		i++;
		return this;		//返回Leaf类型。
	}
	void print () { System,out.println ("i = "+ i ); }
	public static void main(String [] args){
		Leaf leaf = new leaf(100);		//自身这个“i”变成了100.
		leaf.increament().increament ().print ();		调用了两次方法“Leaf increament”,成员变量“i”的值从100变为101再变为102,之后调用print方法,打印出102.	
	}
}

static关键字:

1:在类中,用static声明的成员变量为静态成员变量,它为该类的公共变量,在第一次使用时被初始化,对于该类中的所有对象来说,static成员变量只有一份。
2:用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
3:静态方法不再是针对于某个对象调用,所以不能访问非静态成员。
4:可以通过对象引用或类名(不需要实例化)访问静态成员。

实例:

public	class	Cat{
	private	static	int	sid = 0;		//成员变量“sid”(权限修饰,static修饰),静态变量存放在“date	segment(数据区)。属于整个类”
	private	String  name;
	int	id;
	Cat(String name) {				//构造方法。
		this.name = name;		//使用this关键字,把输入的name值传给成员变量name。
		id = sid++;
	}
	public	void	info(){
		System.out.println
				( “My name is”+name+" No." +id);
	}
	public	static	void	main(String args[]){
		Cat.sid = 100;		//此时还未new处对象,sid的值变成100。
		
		//new了两只猫,两个“id”两个“name”。
		
		Cat mimi = new Cat("mimi");		
		Cat pipi = new Cat("pipi");
		mimi.info();		//输出的id为100,sid变成101;
		pipi.info();		//输出的id为101,sid变成102.
	}
} 	

如果把static去掉:

public	class	Cat{
	private	int	sid = 0;		
	private	String  name;
	int	id;
	Cat(String name) {				//构造方法。
		this.name = name;		//使用this关键字,把输入的name值传给成员变量name。
		id = sid++;
	}
	public	void	info(){
		System.out.println
				( “My name is”+name+" No." +id);
	}
	public	static	void	main(String args[]){
		//Cat.sid = 100;		(无法执行,因为去掉了static,sid属于某一个对象,不new出任何的对象,sid不存在。故删除这条语句。)
		
		//new了两只猫,两个“id”两个“name”。
		
		Cat mimi = new Cat("mimi");		
		Cat pipi = new Cat("pipi");
		mimi.info();		//输出的id为0,sid变成1。
		pipi.info();		//输出的id为0,sid变成1。
	}
}

另:

public	static	void	main(String args[]){		//static,注明main方法是静态,即main方法执行时不需要new对象。
		static	id = 9;		// id不装在某一个对象中是无法访问的。name加一个static,main方法就可以直接访问了。	
		//Cat.sid = 100;	
		Cat mimi = new Cat("mimi");		
		Cat pipi = new Cat("pipi");
		mimi.info();		
		pipi.info();		

猜你喜欢

转载自blog.csdn.net/weixin_43505709/article/details/84500857