[OCAJP]變數遮蔽

Given:

What is the result?

A. Prints 1 2 3 4 5 once
B. Prints 1 3 5 once
C. Prints 1 2 3 4 5 five times
D. Prints 1 2 3 4 5 six times
E. Compilation fails

題解

第3行宣告了物件變數i,第7行的for迴圈又宣告了一個變數i,因此for的變數i會遮蔽掉物件的變數i。無論for怎麼對它的變數i做任何更動,都不會影響到物件的變數i。

物件變數若沒有給定初始值,則預設為0。第6行開始的while迴圈與第11行的「i++;」決定了while迴圈的執行次數,i的變化為0,1,2,...,5,6,只有在小於等於5的時候才會執行while迴圈的內容,因此第7行的for迴圈被執行了6次。每執行一次for迴圈,會印出「1 2 3 4 5 」。

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章