2015-09-13 91 views
-1

我有以下code.I無法理解它是關於傳遞值的行爲。值傳遞給java中的變量

class Box{ 

    int length=5; 
    int height=5; 
    int width=10; 

    void volume(){ 
     int volume; 
     volume=length*height*width; 

     System.out.println(volume); 
    } 

} 

public class DemoBox { 

    public static void main(String[] args){ 

     Box ob=new Box(); 
     ob.length=10; 
     ob.height=10; 
     ob.width=10; 

     ob.volume(); 
    } 
} 

這提供了1000的輸出。爲什麼它不是250?值如何分配給變量?

回答

1

您正在給DemoBox類中的長度,高度和寬度賦值。因此,調用對象ob.volume()會分配新值,並使舊值無效。

可以使用函數重載的原則,並定義了兩個不同的功能

int volume() 
{return length*height*width; 
} 

int volume(int length, int height, int width) 

{return length*height*width; } 

從DemoBox

int returnedvalue = volume() //returns 2500 
int returnedvalue = volume (10,10,10); //returns 1000 
+0

謝謝@ tanveer ..我明白了。我是java的新手。所以我必須學習更多:) – Dinesha

1

其返回1000,因爲你與復位長度,寬度及高度的值10

ob.length=10; 
ob.height=10; 
ob.width=10; 

所以10 * 10 * 10 = 1000

體積方法的調用期間傳遞的那些值:

ob.volume(5,10,5); 

體體積()的方法:

void volume(int length, int width, int height){ 
    int volume=length*height*width; 

    System.out.println(volume); 
     } 

    } 
+0

這個答案調用函數時,但改變'volume'方法是這樣將首先擊敗「Box」類的目的。 – Cinnam

+0

同意。在這種情況下,一個構造函數需要聲明爲: 'Box(int length,int width,int height){ this.length = length; this.width = width; this.height = height; }' 和體積的方法將是這樣的: '公衆詮釋體積(){ 返回長度×高度×寬度; }' – Rehman