java中的this关键字

Java中的this关键字学习总结


在刚开始学习java时,对this关键字认知只停留在概念上,但感觉人家貌似是个可提升代码逼格的东西。

最近在做数据结构与算法相关的笔记题,很多地方都用到了这个this关键字,经过查阅各种资料,总算把这个看似有逼格但合的this搞的差不多了。

下面直接利用这道数据结构的题目来介绍、总结,this关键字的用法。(这道题目几乎涵盖了this关键字的所有重要用法)。

题目:

实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小元素的操作(本题目摘自左程云的算法面试书上)。

      public class getMinStack {
	public static class MyStack{
		private Stack stackData;
		private Stack stackMin;
		public MyStack(){//构造方法中,this关键字不可省
			//构造方法,用来初始化成员变量的参数一般和成员变量取相同的名字,不可以省略。
			this.stackData=new Stack();
			this.stackMin=new Stack();
		}
		//入栈
		public void push(int newNumber){//在方法中,凡是访问成员变量,默认前都有一个this,当命名不冲突时,可以不用写。
            if(this.stackMin.isEmpty()){//this关键字
				this.stackMin.push(newNumber);
			}else if(newNumber>=this.stackMin.peek()){
				this.stackMin.push(this.stackMin.peek());
			}else if(getMin()>newNumber){//如果在方法内部调用同一个类中的另一个方法,就不必使用this,
		   //直接调用即可,当前方法中的this引用会自动(编译器干的事)应用于同一类中的其他方法。
			this.stackMin.push(newNumber);
			}
			this.stackData.push(newNumber);
		}
		//出栈
		public  int pop(){
			if(this.stackData.isEmpty()){
				throw new RuntimeException("您栈中已无元素");
			}
			return this.stackData.pop();//this也常用在return语句中,返回对当前对象的引用
		}
	    //求取最小值
		public int getMin(){
			if(this.stackMin.isEmpty()){
				throw new RuntimeException("您的最小值栈中已无元素");
			}
			return this.stackMin.pop();
		}
	}
	public static void main(String[] args){
		MyStack stack=new MyStack();
		stack.push(2);
		stack.push(5);
		stack.push(1);
		System.out.println(stack.getMin());
		System.out.println(stack.pop());
		System.out.println(stack.getMin());

	}

this关键字的知识重点总结:

1.this关键字指代当前对象,只能在方法内部使用,表示对“调用方法的那个对象”的引用,也就是谁调用指的就是谁。

2.在方法中访问成员变量,默认前面都有个this,只有当命名冲突时,必须写上this关键字。

3.当命名冲突时,this不可以省略。
4.构造方法是用来初始化成员变量的参数,一般和成员变量取相同的名字,利于代码的可读性, 因此this关键字不可以省。

5.this也常用在return语句中,返回对当前对象的引用。

**注意** :如果在方法内部调用同一个类中的另一个方法,就不必使用this,直接调用即可,当前方法中的this引用会自动(编译器干的事)应用于同一类中的其他方法。

**##最后还有**:当必须明确指出对当前对象的引用时,才需要使用this。不要为了所谓的“更清楚明了”在每一个方法调用和字段前都使用this,最最最好不要这么做,使用高级语言的原因之一就是它能帮助我们做一些事情,非要把this放在没必要使用的地方,你的代码将会看起来很low。


------时隔多日,又回到了博客life!


你可能感兴趣的:(java)