Java語言有三種控制結構:順序結構、分支結構、循環結構java
順序結構就是程序從上而下逐行地執行,中間沒有任何判斷和跳轉程序員
控制表達式只容許byte、short、char、int、String和枚舉類型
express
swicth(expression){ case condition1:{ statement(s) break; } case condition2:{ statement(s) break; } ... default:{ statement(s) } } // 注意每一個case中須要帶有break;
switch中的每一個case中都須要帶有break,由於switch語句遇到相等的值,程序就開始執行這個case標籤後的代碼,再也不判斷與後面case,default標籤的條件是否匹配,除非遇到break;纔會結束數組
初始化語句init_statement 循環條件test_expression 循環體body_statement 迭代語句iteration_statement
[init_statement] while(test_expression){ statement; [iteration_statement] } 例: int count = 0; while(count<10){ System.out.println(count); count++; }
// 循環體至少執行一次 [init_statement] do{ statement; [iteration_statement] }while(test_expression); 例: int count = 0; do{ System.out.println(count); count++; }while(count<10);
for([init_statement];test_expression;[iteration_statement]){ statement; }
for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ System.out.println(i+j); } }
結束當前循環併發
// 結束至指定循環 outer: for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ System.out.println(i+j); if(j==1){ break outer; } } }
// 忽略本次循環 for(int i=0;i<5;i++){ if(i==2){ continue; System.out.println(i); } }
數組用於存儲多個數據,每一個數組元素存放一個數據,一般可經過數組元素的索引來訪問數組元素,包括爲數組元素賦值和取出數組元素的值app
Java語言中數組必須先初始化,而後纔可使用。所謂初始化,就是爲數組元素分配內存空間,併爲每一個數組元素賦初始值。只要爲數組元素分配了內存空間,數組元素就具備了初始值。初始值的得到由兩種形式:一種是由系統自動分配,另外一種由程序員指定。工具
String[] strArray(推薦) String strArray[]
arrayName=new type[ ] {element1,element2,element3.....};性能
初始化時由程序員顯式指定每一個數組元素的初始值,由系統決定數組長度 int[] intArray = new int[]{5,6,7,8} int[] intArray = {5,6,7,8}
arrayName=new type[length];spa
int[] intArray = new int[4]; 初始值以下: 整型(byte、short、int和long),初始值是0 浮點(float、double),初始值是0.0 字符(char),初始值是'\u0000' 布爾(boolean),初始值是false 引用類型(類、接口和數組),初始值是null
數組下標從0開始,intArray[0]是第一個元素
可使用for或foreach遍歷數組code
數組變量只是一個引用,實際的數組對象被存儲在堆(heap)中
若是引用的對象是局部變量,那麼它被存儲在棧(stack)中
String[][] strArray = new String[][]{new String[3],new String[]{"hello"}}
Java提供了操做數組的工具類:java.util.Arrays;Arrays類包含的一些static修飾的方法能夠直接操做手數組。
查找元素出現索引(要求元素已經升序排序): int Arrays.binarySearch(type[] a,type key) 若是數組不包含key,則返回負數 在指定範圍查找元素出現索引(要求元素已經升序排序): int Arrays.binarySearch(type[] a,int fromIndex,int toIndex,type key) 複製數組,若是小於原來長度則取前面的元素,若是大於則多出來的補默認值 type[] Arrays.copyOf(type[] original,int length) 在指定範圍複製數組,與上面相似 type[] Arrays.copyOfRange(type[] original,int from,int to) 對比數組,若是長度相等且數組元素也一一相同,返回true boolean Arrays.equals(type[] a,type[] b) 數組賦值,把數組元素所有複製爲val void Arrays.fill(type[] a,type val) 在指定範圍數組賦值 void Arrays.fill(type[] a,int fromIndex,int toIndex,type val) 排序 void Arrays.sort(type[] a) 在指定範圍數組排序 void Arrays.sort(type[] a,int fromIndex,int toIndex) 轉換成字符串,按順序把多個數組元素連綴在一塊兒,多個數組元素使用英文逗號和空格隔開 String Arrays.toString(type[] a)
Java8新增操做數組API
Java8加強了Arrays類的功能,爲Arrays類增長了一些工具方法,這些工具方法能夠充分利用多CPU並行的能力來提升設值、排序的性能。
int[] arr1 = new int[]{3,-4,25,16,30,18}; // 併發排序,性能更強 Arrays.parallelSort(arr1); int[] arr2 = new int[]{3,-4,25,16,30,18}; // 前一個元素乘積和後一個元素相乘,第一個元素時乘以1 {1*3=3,3*-4=-12,-12*25=-300,-300*16=-48000,-48000*30=-144000,-144000*18=-2592000} Arrays.parallelPrefix(arr2,new IntBinaryOperator(){ public int applyAsInt(int left,int right){ return left*right; } }); int[] arr3 = new int[5]; // 與索引值相乘 {0,5,10,15,20} Arrays.parallelSetAll(arr3,new IntUnaryOperator(){ public int applyAsInt(int operand){ return operand*5; } });