大家看到這個題目可能不以為然,不過接下來你看到絕對會讓你慶幸,因為你選擇了屌絲!
java兩大迴圈大家應該都非常熟悉了,不熟悉的可以去學習下java基礎或者C語言基礎。這兩大迴圈無非就是for迴圈和while迴圈。
今天我不是要交大家怎麼使用,而是要告訴大家他們兩位好基友之間不為人之的秘密。
首先我們來看這樣一段代碼:
1 public static void main(String[] args){
2 int n = 100;
3 for(;;) {
4 }
5 System.out.println(n);
6 }
以上這段代碼會編譯出錯嗎?答案很簡單,放到eclipse裡面一運行就能得出,不能編譯通過。好為什麼不能編譯通過?也許有人會說因為上面是個死迴圈啊!
那好,我們再來看一段代碼
1 public static void main(String[] args) {
2 int n = 100;
3 while(n>0);
4 System.out.println(n);
5 }
上面這段代碼會編譯出錯嗎? 答案是不會。
同樣是死迴圈,為什麼差別那麼大呢?也許你這時候會懷疑,他們兩個不是一個媽生的,也許你會懷疑他們是屌絲遇到了白富美。
不管你們怎麼想,我都決定將這個不可告人的秘密公諸於眾。
原因就是:迴圈問題
雖然兩個大家看起來都是死迴圈,但是死迴圈在某種程度上是不一樣的。
仔細看看兩個迴圈,第一個迴圈是沒有變數可以改變他,那麼我們的電腦會認為這個迴圈沒得救了,死定了,所以後面的語句也算是跟錯人了,永遠沒有出頭之日。 而第二個迴圈呢,他的控制中是有變數來控制的,這個變數在電腦看來這個死迴圈還有的救,只要改變變數的值,後面的語句那還是有機會出頭的。所以這個秘密其實與迴圈語句無關,而是迴圈的方式有關係。
當然很多初學者可能看不懂第一個迴圈為啥是死迴圈,我給大家解釋下for迴圈中必須要有兩個分號,當然如果除了分號什麼都沒有,那麼預設是這樣的
1 public static void main(String[] args){
2 int n = 100;
3 for(;true;) {
4 }
5 System.out.println(n);
6 }
for迴圈中第一個位置是變數的初始化,記住是初始化,你這樣寫是不行的
1 public static void main(String[] args){
2 int n = 100;
3 for(n;true;) {
4 }
5 System.out.println(n);
6 }
為什麼不行,因為for迴圈的第一個分號前面要初始化,你必須這樣寫
1 public static void main(String[] args){
2 int n = 100;
3 for(n=100;true;) {
4 }
5 System.out.println(n);
6 }
也就是說,哪怕你在上面定義了,下面for迴圈中你要使用就必須要賦初始值。
關於for迴圈還有一點要說,通常我們用的for迴圈在最後一個分號後面是寫自加自減運算,其實只要是語句都可以填進去,唯一要注意的就是不能在這句語句後面加上分號。具體如下:
1 public static void main(String[] args){
2 int n = 100;
3 for(n=100;true;System.out.println(n)) {
4 }
5 System.out.println(n);
6 }
這樣寫是沒有問題的。
同樣有初學者會問while後面直接加分號是什麼意思,也許我這樣寫你就明白了:
1 public static void main(String[] args) {
2 int n = 100;
3 while(n>0){
4 ;
5 }
6 System.out.println(n);
7 }
好了,今天的屌絲大話JAVA之兩大迴圈之不可告人的秘密就到這裡,歡迎大家欣賞!