Java“。”运算符及其真正的作用?

时间:2014-05-02 00:09:47

标签: java

假设您有一些名为Dude的随机类,并且您有一些私有实例变量,并且您有一些get方法和一个compareTo方法来说明该类的一个实例是否具有相同的变量作为班级的另一个例子而且几乎就是这样。好吧,让我们在某个驱动程序类中说,你创建了两个Dude个对象,然后将它们称为d1d2。 那么,现在你想比较两者,看看他们是否有相同的实例数据,所以你要打电话给d1.compareTo(d2);

现在,我的问题是,在dude类中创建compareTo方法时,将一个对象作为参数传递给另一个对象.....?

我认为它会像这样:

public boolean compareTo(Dude d){
    if (this.getArbitraryVariable() == d.getArbitraryVariable()) return true

等等。

但是为了工作,你不会知道当前正在执行的对象是什么,我能想到的唯一逻辑解释是"。" operator生成它左边的任何内容,即类中当前正在执行的对象。是对还是不对?

2 个答案:

答案 0 :(得分:3)

这不是正确的直觉。

当您撰写d1.compareTo(d2);时,会将其编译为更接近compareTo(d1,d2)的内容。

也就是说,当你在一个对象上调用一个方法时,你基本上是隐式地将该对象作为第一个参数传递。

当您方法中时,使用关键字this来引用传递给方法的隐式对象。

答案 1 :(得分:0)

点运算符不仅为您提供当前执行对象,还可以为您提供当前正在执行的类,这是您使用静态方法和静态变量的方式。

例如: -

staticClass.staticMethod();

您也可以使用点运算符进行链接。对于前

String finalValue=input.replaceAll("numbers","alphabets").substring(0,`32).trim();