簡體   English   中英

使用靜態關鍵字

[英]use of static keyword

我在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字段(無論是否static都初始化為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 ,您遇到了一個問題,但沒有將它們分配給length, breadth, height

順便說一句,在這種情況下,您實際上並不需要static 對於您的班級,這將是一個更好的設計:

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,所以它將始終return 0否則,它將始終return 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。

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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM