Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用“this.methodName”调用类的私有方法与仅使用“methodName”调用类的私有方法之间的区别_Java_This - Fatal编程技术网

Java 使用“this.methodName”调用类的私有方法与仅使用“methodName”调用类的私有方法之间的区别

Java 使用“this.methodName”调用类的私有方法与仅使用“methodName”调用类的私有方法之间的区别,java,this,Java,This,我见过许多实现,其中一个类C1和一个私有方法M1。我已经看到使用this.M1或这个类的其他方法中的M1来使用这个方法M1 正确的方法是什么 及 有什么区别 编辑 当多个线程试图访问同一个方法时,这与此有什么关系 这是一种特殊的编码风格。在这种特殊情况下,这是多余的,因为它是隐含的。我用它来提高可读性。通常,您会使用此选项来解决实例变量和同名局部变量引起的歧义,其中局部变量会遮挡实例变量: public class C1{ private int x ; private void M1(

我见过许多实现,其中一个类C1和一个私有方法M1。我已经看到使用this.M1或这个类的其他方法中的M1来使用这个方法M1

正确的方法是什么

有什么区别

编辑

当多个线程试图访问同一个方法时,这与此有什么关系


这是一种特殊的编码风格。在这种特殊情况下,这是多余的,因为它是隐含的。我用它来提高可读性。通常,您会使用此选项来解决实例变量和同名局部变量引起的歧义,其中局部变量会遮挡实例变量:

public class C1{
  private int x ;
  private void M1(int x){
    this.x = x;
  }
}

这是一种特殊的编码风格。在这种特殊情况下,这是多余的,因为它是隐含的。我用它来提高可读性。通常,您会使用此选项来解决实例变量和同名局部变量引起的歧义,其中局部变量会遮挡实例变量:

public class C1{
  private int x ;
  private void M1(int x){
    this.x = x;
  }
}
没什么区别

调用M1与此相同。M1

尽管人们可以说后一种形式更清晰易读。

没有任何区别

调用M1与此相同。M1


尽管有人认为后一种形式更清晰易读。

没有区别,因为两者都指向同一个实例成员

使用this关键字最常见的原因是字段被方法或构造函数参数隐藏

要突出显示文档中的最后一点,如果没有代码,则其无效。因此直接粘贴

例如,Point类是这样编写的

public class Point {
    public int x = 0;
    public int y = 0;

    //constructor
    public Point(int a, int b) {
        x = a;
        y = b;
    }
}
but it could have been written like this:

public class Point {
    public int x = 0;
    public int y = 0;

    //constructor
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}
构造函数的每个参数都会隐藏对象的一个字段-在构造函数x中是构造函数第一个参数的本地副本。若要引用点字段x,构造函数必须使用此.x


没有区别,因为两个点指向同一实例成员

使用this关键字最常见的原因是字段被方法或构造函数参数隐藏

要突出显示文档中的最后一点,如果没有代码,则其无效。因此直接粘贴

例如,Point类是这样编写的

public class Point {
    public int x = 0;
    public int y = 0;

    //constructor
    public Point(int a, int b) {
        x = a;
        y = b;
    }
}
but it could have been written like this:

public class Point {
    public int x = 0;
    public int y = 0;

    //constructor
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}
构造函数的每个参数都会隐藏对象的一个字段-在构造函数x中是构造函数第一个参数的本地副本。若要引用点字段x,构造函数必须使用此.x



没有合适的方法,更多的是编码问题style@RC:这是否有助于多个线程尝试访问同一方法?为什么要向下投票?更重要的是,命名类和方法没有任何意义,注释是无用的,它也不适用于javadoc格式。@RupeshKumar不,它不是。这没有什么区别。没有人对这个问题投了反对票,如果他们投了,你也不知道他们是谁。@Rupesh看到Rohit或suresh的答案,我也没有投反对票。没有正确的方法,更多的是编码问题style@RC:这是否有助于多个线程尝试访问同一方法?为什么要向下投票?更重要的是,命名类和方法没有任何意义,注释是无用的,它也不适用于javadoc格式。@RupeshKumar不,它不是。这没有什么区别。没有人对这个问题投了反对票,如果他们投了,你也不知道他们是谁。@Rupesh看到Rohit或suresh的答案,我也没有投反对票。还有一点是,这与访问相同方法的线程有任何关联。只是好奇?@Rupshkumar我想这与线程无关。多线程如何访问你的方法,你能给我们看一些代码吗@Rupeshkumar,正如我所说的,这是多余的和隐含的,因此即使在多线程环境中,它也不会对您的情况产生任何影响。只是好奇?@Rupshkumar我想这与线程无关。多线程如何访问你的方法,你能给我们看一些代码吗@Rupeshkumar,正如我所说的,这是多余的和隐含的,所以即使在多线程环境中,它也不会对您的情况产生任何影响。这很有帮助,但我也想检查一下第三个问题…:@RupeshKumar AFAIK的答案是..这取决于它是每个线程一个实例还是多个线程的实例。当然,如果是在线程之间共享,则不会。这很有帮助,但也希望检查第三个问题…:@RupeshKumar AFAIK的答案是..这取决于它是每个线程一个实例还是多个线程的实例。当然,如果它在线程之间共享,则不会。