如何做静态方法?

时间:2015-12-02 04:25:32

标签: java methods static static-methods

我有这段代码而且我缺少静态字段。如何在此程序中执行静态字段?我还需要实例字段吗?

import java.util.Scanner;

public class Geometry
{

    public static double sphereVolume(double r)
    {
        double svol=(4.0/3.0)*Math.PI*(Math.pow(r,3));
        return svol;
    }

    public static double sphereSurface(double r)
    {
        double ssur=4.0*Math.PI*(Math.pow(r,2));
        return ssur;
    }

    public static double cylinderVolume(double r, double h)
    {
        return (Math.PI*r*r*h);
    }

    public static double cylinderSurface(double r, double h)
    {
        double csur=2*(Math.PI*(Math.pow(r,2)))+(2*Math.PI*r)*h;
        return csur;
    }

    public static double coneVolume(double r, double h)
    {
        return (Math.PI/3.0)*h*(Math.pow(r,2));
    }

    public static double coneSurface(double r, double h)
    {
        return Math.PI*r*r+Math.PI*r*Math.sqrt(Math.pow(r,2)+(Math.pow(h,2)));
    }

    public static void main(String[] args)
    {
        Scanner in=new Scanner(System.in);
        System.out.println("What is the radius?");
        String input=in.nextLine();
        double r=Double.parseDouble(input);
        System.out.println("The volume of the sphere:"+sphereVolume(r));
        System.out.println("The Surface Area of the sphere:"+sphereSurface(r));

        System.out.println("The Surface Area of the sphere:"+cylinderSurface(r,h));
        System.out.println("The volume of the cone:"+coneVolume(r,h));
        System.out.println("The Surface Area of the cone:"+coneSurface(r,h));
    }
}

3 个答案:

答案 0 :(得分:0)

因为你在静态上下文中,没有任何Geometry类的引用,你需要指定这些方法的调用位置,如下所示:

 System.out.println("The volume of the sphere:"+Geometry.sphereVolume(r));

答案 1 :(得分:0)

您首先应该了解什么是实例和静态成员,然后您可以更好地理解并轻松地与语法相关联。

实例成员/变量:基于每个对象为内存分配内存。无论何时创建新对象,该对象都将所有实例变量作为其中的一部分。

静态成员/变量:它们是按类创建的,而不是基于每个对象。因此,为了访问它们,您只需要类的名称(ClassName.member)。引用它们时无需指定任何对象引用,因为它们与Class而不是对象相关联。

答案 2 :(得分:0)

对于静态字段,您需要使用static关键字将字段与您声明的类型相关联。

private static double variable;

不,您不需要创建对象实例,创建对象实例就像将所有内容放在实例的对象框中,即那些字段现在属于实例但是静态字段属于它们关联的类型或声明为什么 Geometry.SomeVariable 将具有与实例无关的相同字段。