1. 程式人生 > >2018年8月6日筆記(迴圈結構、流程控制、陣列、記憶體初講)

2018年8月6日筆記(迴圈結構、流程控制、陣列、記憶體初講)

複習:

1. 運算子

      算術:

              % - 取餘 - 注意結果的正負號

              ++/--在變數之前需要先自增後運算;在變數之後先運算後自增;byte/short/char參與運算

      賦值:

              除了=,其他的符號都要求變數先有值才能使用

              byte/short/char可以參與賦值運算

              不允許連等定義但是允許連等賦值

      比較:

               不允許用比較運算子表示一個連續的範圍 --- 3 < n < 5

      邏輯:

                ^:相同為假不同為真

                &&和||的短路特性

      位:

                針對整數的補碼進行運算

                交換值的方式:追尾法、加減法、異或法

      三元:

                執行順序:先執行邏輯值,如果邏輯值為true則執行表示式1;反之執行表示式2

                三元表示式中的兩個式子的結果型別必須能夠轉化

流程控制

                順序結構:指程式碼從上到下從左到右依次編譯執行

分支結構

      判斷結構

               if(){}

               if(){}else {}

               if(){}else if(){}

      練習:輸入一個數字,然後輸出這個數字表示星期幾

               3 -> 星期三

      選擇結構

            switch(選擇){

                   case 選項1:Code1;break;

                   case 選項2:Code2;break;

                   ...

             }

             switch()中需要一個選項,選項只能是byte/short/char/int,從JDK1.7開始,允許使用String

             如果每一個case之後都有break,case順序不影響結果

             如果有一個或者多個case之後沒有break,那麼這個時候case之間的順序影響結果

             練習:輸入兩個數字以及一個符號,輸出這兩個數字在這個符號下運算產生的結果

                        5 9 + -> 14

                        switch(){

                        case “+”:...

                        case “-”:...

                        }

             練習:輸入三個數字表示年月日,輸出這一天在這一年是第幾天

                        2012 3 5 ---> 65

                        2014 3 5 ---> 64

                        需要判斷平年閏年:逢百整除400;不逢百整除4

                        2012 % 4 == 0 --- true

                        2100 % 400 == 0 --- false

迴圈結構

             用於完成一些相同或者相似的重複的操作

              while(邏輯值){

                    Code;

              }

              執行順序:

                    

             練習:

             1. 求1-100以內所有的奇數的和 --- i = 1; i += 2;

             2. 列印100以內能被3整除而不能被7整除的數字 --- 先獲取3的倍數  int i = 0; i += 3;

             3. 輸入一個數字,輸出這個數字是一個幾位數

             4. 輸入一個數字,輸出這個數字的所有的因數 --- 從1開始,逐個數字取餘這個輸入的數字,看是否能夠整除

             20:1 2 4 5 10 20

             定義一個迴圈,需要三個要素:定義一個變數來控制次數,利用判斷條件決定迴圈結束;在迴圈過程中需要改變變數

             do{

                  Code;

              } while(邏輯值);

             注意:無論條件是否滿足,do-while的迴圈體必然至少執行一次。

             for(定義迴圈變數; 控制條件; 改變迴圈變數){

                     Code;

             }

             

            習慣上如果變化不規律或者次數不確定一般使用while迴圈;如果變化規律或者是次數固定,一般是用for迴圈

  求1-10的和 --- for迴圈       

int sum = 0;

for(int i = 1; i <= 10; i++){

    sum += i;

}

   從控制檯獲取一個大於10的奇數

Scanner s = new Scanner(System.in);

int n = s.nextInt();

// 使用while迴圈

while(n < 10 || n % 2 == 0){

    n = s.nextInt();

}

// 使用for迴圈

for(; n < 10 || n % 2 == 0; n = s.nextInt()){

}

   練習:列印九九乘法表

    1*1=1

    1*2=2 2*2=4

    1*3=3 2*3=6 3*3=9

     。。。

   練習:

   百錢百雞 --- 3文錢1只公雞,2文錢1只母雞,1文錢3只小雞;100文錢如何買恰好100只雞? --- 先定義一個迴圈表示公雞,巢狀一個迴圈表示母雞,計算小雞的個數,根據各種雞的個數來計算錢數是否為100

break和continue

           break:用於選擇結構和迴圈結構,表示結束當前的一層結構

           continue:只能用於迴圈結構,表示跳過本次迴圈繼續下次迴圈(只能跳過一層迴圈)

           擴充套件作業:一個迴圈列印九九乘法表

陣列

           儲存同一型別的多個數據的容器---大小是固定的

           陣列會對放入其中的資料(元素)進行編號,編號是從0開始的 - 下標

           陣列的容量 --- 長度

定義格式

           資料型別[] 陣列名 = new 資料型別[長度];

                int[] arr = new int[5]; --- 表示定義一個能儲存5個整型元素的陣列

           資料型別[] 陣列名 = new 資料型別[]{元素1,元素2,元素3......};

                int[] arr = new int[]{1,2,5,6,8,9,6};

                int[] arr={1,5,8,6,3};

           給定了陣列的資料,也確定了陣列的長度。

記憶體

           Java將所佔用的記憶體劃分為了5塊:棧記憶體、堆記憶體、方法區、本地方法棧、PC計數器(暫存器)

棧記憶體

           用於儲存變數的。變數在棧記憶體使用完成之後會立即移除出棧記憶體。

堆記憶體

          用於儲存物件(陣列是一種特殊的物件)的。元素在存入堆記憶體中之後會自動的賦予預設值:

          byte/short/int   -  0       long  -  0L           float  -  0.0f       

          double  -  0.0    char  -  ‘\u0000’    boolean  -  false,其他型別的預設值都是null。

          物件在用完之後是在不確定的某個時刻被回收。

            

            

          預習: logab = logcb/logca  logabn = nlogab logab = loga + logb