Java中的this关键字学习总结
在刚开始学习java时,对this关键字认知只停留在概念上,但感觉人家貌似是个可提升代码逼格的东西。
最近在做数据结构与算法相关的笔记题,很多地方都用到了这个this关键字,经过查阅各种资料,总算把这个看似有逼格但还凑合的this搞的差不多了。
下面直接利用这道数据结构的题目来介绍、总结,this关键字的用法。(这道题目几乎涵盖了this关键字的所有重要用法)。题目:
实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小元素的操作(本题目摘自左程云的算法面试书上)。
public class getMinStack {
public static class MyStack{
private Stack<Integer> stackData;
private Stack<Integer> stackMin;
public MyStack(){//构造方法中,this关键字不可省
//构造方法,用来初始化成员变量的参数一般和成员变量取相同的名字,不可以省略。
this.stackData=new Stack<Integer>();
this.stackMin=new Stack<Integer>();
}
//入栈
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!