2011-12-22 32 views
0

這裏是一個程序困惑,瞭解程序的輸出

public class MovieTitle { 
    public static void main(String[] args) { 
     Movie one = new Movie(); 
     one.title = "I am title"; 
     one.playIt(); 
     System.out.println(one.title); 
    } 
} 

class Movie { 
    String title; 
    void playIt() { 
     this.title = "I am title of movie"; 
    } 
} 

輸出爲「我是電影的標題爲」 我試圖去了解它,但到現在爲止我沒有正確理解它。 我想知道:爲什麼它不打印「我是冠軍」活動的

+2

我希望這不是在學校裏的示例代碼。 – cherouvim 2011-12-22 07:21:43

+0

代碼片段發生了什麼? – 2011-12-22 07:41:18

+2

爲什麼倒票? OP已經寫了一些代碼並正在請求解釋,聽起來對我來說很合理。 – Abbas 2011-12-22 07:44:28

回答

5

順序:

// create a new Movie called "one" 
Movie one = new Movie(); 

// at this point, one.title is still null 

// set the title to "I am title" 
one.title = "I am title"; 

// call playIt, which in turn ... 
one.playIt(); 
    // sets the title to something else again 
    => this.title = "I am title of movie"; 

如果在調用playIt之前打印的標題,它仍然會顯示爲「我標題」。

0

原因是您在調用playIt()時標題爲「我是電影的標題」; 嘗試改變兩行

one.title = "I am title"; 
one.playIt(); 
0

如果你描繪出的叫聲,它應該成爲相當明顯的順序。

Movie one = new Movie(); 

標題是NULL在此點(即,它已經沒有賦值)

one.title = "I am title"; 

現在你的電影對象一個人的標題是「我是冠軍」

one.playIt(); 

調用playIt()方法,將「this」(這是一個)的標題設置爲「我是電影的標題」

0

Yo您將"I am title"設置爲title 類型的對象one中的變量。

當您在同一個對象中調用方法playIt()時,變量標題被賦值爲另一個值"I am title of movie"

如果反轉線,像這樣

one.playIt(); 
one.title = "I am title"; 

輸出將是"I am title",因爲你設置這個值,你叫playIt()方法之後。

1

這是否說明爲什麼:

public class MovieTitle { 
    public static void main(String[] args) { 
     Movie one = new Movie(); 
     System.out.println(one.title); 
     one.title = "I am title"; 
     System.out.println(one.title); 
     one.playIt(); 
     System.out.println(one.title); 
    } 
} 

class Movie { 
    String title; 
    void playIt() { 
     this.title = "I am title of movie"; 
    } 
} 

下面是相應的輸出:

java MovieTitle 
null 
I am title 
I am title of movie