在Java中使用关键字this进行讨论

时间:2017-04-03 15:38:44

标签: java netbeans this

我已经阅读了许多关于使用关键字的解释'这个'在java中,但仍然不完全理解它。我是否在此示例中使用它:

private void login_BActionPerformed(java.awt.event.ActionEvent evt) {                                        
    if(user_TF.getText().equals("admin")&& pass_PF.getText().equals("admin")){
        this.B.setVisible(true);
    }else{
        JOptionPane.showMessageDialog(null, "Warning!", "InfoBox: "+"Warning", JOptionPane.INFORMATION_MESSAGE);
    }
    this.user_TF.setText("");
    this.pass_PF.setText("");
}      

如果用户和传递匹配,它应该打开一个新窗口。我使用这个'关键字在哪里?

2 个答案:

答案 0 :(得分:1)

我认为您应该知道两个主要用法

  • 如果你有一个名为N的类变量和一个名为N的方法变量,那么为了区分它们,使用this.N表示类变量,N表示方法变量。 Screenshot displaying possible usage
  • 想象一下,你有2个构造函数。一个采用String名称,另一个采用名称+年龄。只需使用this()调用另一个构造函数,而不是复制代码。 Another screenshot displaying the usage

在你的情况下,我没有看到名称' B'的任何LOCAL(方法)变量,所以我猜你可以不用它。

答案 1 :(得分:0)

该类的任何非静态方法都需要调用该类的对象。类具有修改和读取状态的状态和行为的蓝图。对象是这个蓝图的实现。创建对象后,它具有这些状态和方法。

假设您有以下代码。

public class A{
    int property;
    public void foo(){
         bar();
    }

    public void bar(){
         property = 40;
    }
}

public class B{
    public static void main(String[] args){
        A obj = new A();
        obj.foo();
    }
}

让我们试着回答几个问题。

Q1。在mwthod foo内部,我们调用bar,我们没有使用任何显式对象来调用它(使用.点运算符),对象是调用的方法bar

Q2。方法bar尝试访问和修改名为property的变量。这个名为property的状态属于哪个对象?

答案

A1。 A.this引用的对象(它与this相同)。它是调用foo方法的对象,隐式地使被调用的方法可用。可以通过this访问执行该方法的对象。

A2。与Q1的答案相同。

任何时候的对象都可以通过Classname.this访问非静态方法或类的块。