为什么一个代码要求我创建一个对象,而另一个代码则不需要?

时间:2018-12-05 23:04:22

标签: java oop

我有两段代码,其中一个要求我创建一个新对象,然后使用该对象调用方法。无需我创建该对象,另一种代码即可工作。

import java.util.Scanner;

public class Wheel
{
    double radius;

    public Wheel (double radius)
    {
        this.radius = radius;
    }

    double getCircumference()
    {
       return 2 * Math.PI * radius;
    }

    double getArea()
    {
        return radius * radius * Math.PI;
    }

    public static void main (String [] args)
    {
        System.out.println("Please enter a number: ");
        Scanner numInput = new Scanner(System.in);
        double num = numInput.nextDouble();

        Wheel r = new Wheel(num);
        System.out.println(r.getCircumference());
        System.out.println(r.getArea());
    }
}

这是另一个。

public class GiveChange
{

    public static int getQuarters(int p)
    {
        return p / 25;
    }

    public static int getDimes(int p, int q)
    {
        return p / 10;
    }

    public static int getNickels(int p, int q, int d)
    {
       return p / 5;
    }

    public static int getPennies(int p, int q, int d, int n)
    {
        return p / 1;
    }

    public static void main(String[] args)
    {
        int pennies = 197;
        int q = getQuarters(pennies);
        pennies -= q * 25;
        int d = getDimes(pennies, q);
        pennies -= d * 10;
        int n = getNickels(pennies, q, d);
        pennies -= n * 5;
        int p = getPennies(pennies, q, d, n);
        String str = String.format("The customer should recieve %d " +
                "quarters, %d dimes, %d nickels, " +
                "and %d pennies.", q, d, n, p);
        System.out.println(str);
    }
}

是因为第二个代码具有public static int,而第二个代码只是具有数据类型。

2 个答案:

答案 0 :(得分:0)

Wheel类定义并实例化一个对象,以在main内部使用。 GiveChange类不需要实例化对象,因为您正在使用static方法。

两者之间的区别很简单-Wheel保持状态-就像车轮的半径-但GiveChange并不保持任何状态以便进行计算。

答案 1 :(得分:0)

在第二个代码中,如果您想拥有一个GiveChange对象,也应该重新添加它。但您使用的是静态方法,则不需要在那里添加新对象。 有关Java静态方法的更多信息,请访问here