Java入門學習-學習if & else,for迴圈,foreach迴圈,while迴圈的用法。

gongjinsi發表於2017-05-06

一、語法結構

1、if
用於分支情況:如果。。。就。。。否則就。。。

if(布林表示式)
{
   //如果布林表示式為true將執行的語句
}
if(布林表示式){
   //如果布林表示式的值為true
}else{
   //如果布林表示式的值為false
}

2、for
用於迴圈處理:如從100內的偶數相加:從2開始,到100結束,控制變數每次增加2

for(初始化; 布林表示式; 更新) {
    //程式碼語句
}

3、foreach
只讀型for迴圈,用於 遍歷

for(宣告語句 : 表示式)
{
   //程式碼句子
}

4、while
當條件成立時,一直執行迴圈體,直到不滿足條件
do-while要注意while表示式後面有;

while( 布林表示式 ) {
  //迴圈內容
}

先執行一次,再判斷條件是否成立

do {
       //程式碼語句
}while(布林表示式);

二、實踐

1、if-else
下面為加深理解比較兩個string是否相等的栗子

public class temp {
    public static void main (String[] args){
        String string=new String();
        string="Hello C!";
        String string1="Hello C!";
        String string2=new String("Hello C!");
        if (string==string1) {
            System.out.println("兩個String用==判斷相同");//程式執行了該語句,因為在java中字串的值是不可改變的,相同的字串在記憶體中只會存一份,所以string和string1指向的是同一個物件;
        }
        else System.out.println("兩個String用==判斷不同");
        if (string1==string2) {
            System.out.println("兩個String用==判斷相同");
        }
        else System.out.println("兩個String用==判斷不同");//程式執行了這句,因為string1和string2指向的物件是不同的
        if (string1.equals(string2)) {
            System.out.println("兩個String用equals判斷相同");
        }
        else System.out.println("兩個String用equals判斷不同");
    }       
}

/*
輸出:
兩個String用==判斷相同
兩個String用==判斷不同
兩個String用equals判斷相同
*/

2、for迴圈
之前做面試題,有一個題是說輸出一個蛇形陣列,如下:
1 2 3
8 9 4
7 6 5
當時沒有做出來,其實靜下心來仔細分析,也不難:主要是要注意下標。下面是寫的一個小方法

public int[][] SnakeMatrix(int [][] s) {
        int count=1;
        int n=s.length;
        for(int i=0;i<n/2+1;i++){
            //上
            for(int j=i;j<n-i;j++){
                s[i][j]=count;
                count++;            
            }
            //右
            for(int j=i+1;j<n-i;j++){
                s[j][n-i-1]=count;
                count++;
            }
            //下
            for(int j=n-i-2;j>=i;j--){
                s[n-i-1][j]=count;
                count++;
            }
            //左
            for(int j=n-i-2;j>i;j--){
                s[j][i]=count;
                count++;
            }
        }
        return s;
    }

3、foreach

//ArrayList的栗子
public static void main (String[] args){
        ArrayList<String> c =new ArrayList<String>();  
            c.add("張三");
            c.add("李四");
            c.add("王五");
        for(String i:c){
            System.out.println(i);  
        }
        //不過網上說這樣效率不高,因為每次i都是建立一個物件,再用get方法得到值。
//String 陣列的栗子
public static void main (String[] args){
        String [] te = new String[5];
        te[0]="test0";
        te[2]="test2";
        te[4]="test4";
        for(String i :te){
            System.out.println(i);
        }
    }
/*輸出
test0
null
test2
null
test4
*/
//初始化後,如果沒有賦值就輸出,會輸出null;
//試了int的陣列,沒賦值的位置輸出0;

4、while
下面是跟著老師視訊寫的一個開根號的方法

private static double Sqrt(double i) {
        // TODO Auto-generated method stub
        double x=1.0;  //根
        do{
            x=(x+i/x)/2;
        }while(Math.abs(x*x-i)>1e-6);
        //直到根的平方無線接近於i,就代表x近似於根。
        //如果不接近,就迴圈回去,再類似二分法(取根和i/根的中間)
        return x;
    }

相關文章