Java 静态关键字的使用

Java 静态关键字的使用,java,Java,我用java编写了一个非常简单的程序来使用static关键字,但是我得到的结果是0。我找不到原因。我是一名java初学者。请任何人提出解决方案,并解释为什么会遇到这样的问题…我的代码如下: public class Cube{ static int length; static int breadth; static int height; public static int volume(final int i, final int j, final int

我用java编写了一个非常简单的程序来使用static关键字,但是我得到的结果是0。我找不到原因。我是一名java初学者。请任何人提出解决方案,并解释为什么会遇到这样的问题…我的代码如下:

public class Cube{

    static int length;
    static int breadth;
    static int height;

    public static int volume(final int i, final int j, final int k){
        return length * breadth * height;
    }

    public static void main(final String args[]){
        System.out
            .println("volume of the cube is : " + Cube.volume(10, 20, 30));
    }
}
int字段(静态或非静态)初始化为0

您应该将操作数i*j*k相乘或分配给静态整型字段。

整型字段,无论是否为静态,都初始化为0


应将操作数i*j*k相乘或分配给静态int字段。

将方法更改为:

public static int volume(final int i, final int j, final int k){
    return i*j*k;
}
会给你想要的价值

另外,请阅读@eljenso的答案以了解更多细节

您可能想要的是:

public static int volume(final int i, final int j, final int k){
   this.length = i;
   this.breadth = j;
   this.height = k; 

   return length * breadth * height;
}
您遇到了一个问题,因为值10、20、30被传递给i、j、k,但您没有将它们指定给长度、宽度和高度

顺便说一下,在这种情况下,你不需要静电。这对你的班级来说是一个更好的设计:

class Cube{

    int length;
    int breadth;
    int height;

    public Cube(int length, int breadth, int height) {
        this.length = length;
        this.breadth = breadth;
        this.height = height;
    }

    public int volume(){
        return length * breadth * height;
    }

}
可按如下方式使用:

public static void main(String[] args) {
   Cube c = new Cube(10, 20, 30);
   System.out.println(c.volume());
}

将您的方法更改为:

public static int volume(final int i, final int j, final int k){
    return i*j*k;
}
会给你想要的价值

另外,请阅读@eljenso的答案以了解更多细节

您可能想要的是:

public static int volume(final int i, final int j, final int k){
   this.length = i;
   this.breadth = j;
   this.height = k; 

   return length * breadth * height;
}
您遇到了一个问题,因为值10、20、30被传递给i、j、k,但您没有将它们指定给长度、宽度和高度

顺便说一下,在这种情况下,你不需要静电。这对你的班级来说是一个更好的设计:

class Cube{

    int length;
    int breadth;
    int height;

    public Cube(int length, int breadth, int height) {
        this.length = length;
        this.breadth = breadth;
        this.height = height;
    }

    public int volume(){
        return length * breadth * height;
    }

}
可按如下方式使用:

public static void main(String[] args) {
   Cube c = new Cube(10, 20, 30);
   System.out.println(c.volume());
}
这将始终返回0,因为长度、宽度和高度最初为0

public static int volume(final int i, final int j, final int k){
    return length * breadth * height;
}
像那样改变它,它就会起作用

public static int volume(final int i, final int j, final int k){
    return i*j*k;
}
这将始终返回0,因为长度、宽度和高度最初为0

public static int volume(final int i, final int j, final int k){
    return length * breadth * height;
}
像那样改变它,它就会起作用

public static int volume(final int i, final int j, final int k){
    return i*j*k;
}

原因是当你打电话时:

return length * breadth * height; 

这些变量包含在一个尚未初始化的对象中,如果您想使用面向对象的方法,则需要使用new关键字对其进行实例化。如果不需要封装长度、宽度和高度的数据,则需要使用static

原因是您打电话时:

return length * breadth * height; 
public class cube{
    static int length=20;
    static int breath=30;
    static int height=10;

    public static int volume( final int i, final int j, final int k){
        System.out.println("i=" + i + "j= " + j + "k= " + k);
        return length*breath*height;
    }

    public static void main(final String args[]){
        int a;
        a=volume(10, 20, 30);
          System.out.println(" area of cube " + a);
    }
}

这些变量包含在一个尚未初始化的对象中,如果您想使用面向对象的方法,则需要使用new关键字对其进行实例化。如果不需要封装长度、宽度和高度的数据,则需要使用static

我猜在没有静态关键字的情况下你是不会尝试的。因为你会得到相同的结果,这表明它与static关键字无关。使用一个像样的编辑器,比如Eclipse,会帮助你解决这个问题,因为它会警告你i、j和k没有任何关系。实际上,我不确定eclipse是否会警告您未使用的方法参数,除非您将设置调高。我猜您没有尝试在没有静态关键字的情况下使用。因为你会得到相同的结果,这表明它与static关键字无关。使用一个像样的编辑器,比如Eclipse,会帮助你解决这个问题,因为它会警告你i、j和k没有任何关系。实际上,我不确定eclipse是否会警告您未使用的方法参数,除非您将设置调高。非常感谢eljenso…我从来没有想到函数中会出现这样的问题。再次感谢,我会小心不要再犯这样愚蠢的错误。非常感谢eljenso…我从来没有想到函数中会出现这样的问题。再次感谢,我会小心不要再犯这种愚蠢的错误。
public class cube{
    static int length=20;
    static int breath=30;
    static int height=10;

    public static int volume( final int i, final int j, final int k){
        System.out.println("i=" + i + "j= " + j + "k= " + k);
        return length*breath*height;
    }

    public static void main(final String args[]){
        int a;
        a=volume(10, 20, 30);
          System.out.println(" area of cube " + a);
    }
}