【问题标题】:What does an Object variable type mean?Object 变量类型是什么意思?
【发布时间】:2012-04-21 03:03:35
【问题描述】:

我试图了解两种同名方法之间的区别。这是我试图理解的代码...

public class Test {
    public static void main(String[] args) {
        MyPoint p1 = new MyPoint();
        MyPoint p2 = new MyPoint(10, 30.5);
        System.out.println(p1.distance(p2));
        System.out.println(MyPoint.distance(p1, p2));
    }
}

class MyPoint {
    .....   
}

public double distance(MyPoint secondPoint) {
    return distance(this, secondPoint);
}

public static double distance(MyPoint p1, MyPoint p2) {
    return Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));
}

有人能解释一下这两种distance() 方法之间的区别吗? MyPoint 类型实际上是什么意思?为什么其中 1 个方法有一个 MyPoint 对象,而另一个方法有 2 个 MyPoint 对象?

【问题讨论】:

    标签: java types methods argument-passing


    【解决方案1】:

    MyPoint 是对象的类型。例如,在distance(MyPoint p1, MyPoint p2) 方法中,这意味着您正在向该方法传递2 个对象——第一个对象是一个名为p1 的MyPoint 对象,第二个对象是另一个名为p2 的MyPoint 对象。

    2个println语句的区别在于第一个运行distance(MyPoint)方法,第二个运行distance(MyPoint, MyPoint)方法。此外,第一个方法将distance()MyPoint p1对象运行到传递给方法的对象(p2),而第二个distance()方法是一个静态调用,它计算2个@987654331之间的距离@ 传入方法的对象(p1p2)。

    【讨论】:

    • 不好意思问,为什么参数里面可以包含类名,但不能包含String或int之类的类型?
    • 它可以包含任何一个。如果它类似于 int 或 boolean,则它指的是原始类型的数据,例如简单数字或真/假。如果它类似于 String、MyPoint 或任何其他类名,则意味着它是一种对象类型,它可能比简单的原始数据类型更复杂
    • 我知道我误解的地方。非常感谢。
    【解决方案2】:

    不同之处在于您的计算方式。第一个通过实例的状态完成,第二个通过“静态”方式完成。

    您可能想查看实际使用情况。如果它类似于实用程序,则将其设为静态更有意义。

    【讨论】:

      【解决方案3】:

      距离是用于计算作为输入给定的两点之间的距离的方法。

      MyPoint 类描述了空间中的点。此类中的 now 方法 distance(Mypoint x) 为您提供该点与作为参数传递的参考点的距离,而静态方法仅返回传递的两点之间的距离

      【讨论】:

        【解决方案4】:

        也许您的问题与静态方法有关?

        p1.distance(p2)
        

        this 调用 MyPoint 的成员函数,此调用来自 MyPoint p1 的特定实例 然而

        MyPoint.distance(p1, p2)
        

        调用MyPoint的静态方法,不需要任何实例,但必须添加MyPoint。告诉编译器您引用的是静态方法或字段。

        【讨论】:

          猜你喜欢
          • 2016-09-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多