程序流程控制
1 順序流程
2 分之流程
在沒有break的情況下小心case穿透!正確使用可以用case連續。 |
Switch
不需要Boolean值的分支語句
格式:switch(參數){
參數必須是int類型的或者能轉換成int類型的值 |
代碼
[<break;>]
break後面不需要加其他語句,除了default。 |
Default;//當所有的條件都不成立的時候使用它
代碼
}
類型:for while,do_while。for each
初始值 |
格式:for(初始值;conditions1;迭代表達式;){
statements
False |
條件 |
Conditions1 |
迭代表達式 |
End |
True |
塊作用域:是指一對花括號括起來的若干條簡單的Java語句。塊確定了變量的作用域。 一個塊可以嵌套的另一個塊中。 public static void main(String[] args){ int n; ----- { int k; --- }//k is only defined up to here } //不能在嵌套的兩個快中聲明同名的變量。 |
1 當for語句的第一部分聲明瞭一個變量之後,這個變量的作用域就是for循環的整個循環體。 2 吐過for語句內部定義了一個變量,那麼這個變量值不能在循環體外使用。 3 可以獨立的在不同的for循環中定義同名的變量。 4 for語句是while循環的一種便捷形式。 |
<循環執行語句>
迭代表達式
}
for each //是在JDK5.0後加入的機制,只是對數據的循環遍歷
用途:用到數組和幾何對象中
for each 的內部機制是一個Iterator迭代器的機制來說實現數據的遍歷。
for each 語句不能自動地處理二維數組的每一個元素。它按行,即按一維數組處理的
訪問:for(double row:balances)
for(double b:row)
//do something with b
多重選擇-----switch語句。<不怎麼提倡>
格式:
switch(choice)
{ case 1:-----break;
case 2:-----break;
-----------------
case n:-----break;
default:----break;
}
中斷流程控制語句
1 break語句
不帶標籤的break 語句: 只能跳出語句塊,不能跳入語句塊。
帶標籤的break語句:用於跳出多重嵌套的循環語句。
<標籤必須防止在最外層的循環之前,並且必須緊跟一個分號>
2 continue語句
作用:將控制轉移到最內層循環的首部。
如果continue語句用於for循環中,就可以跳到for循環的“更新”部分。
帶標籤的continue語句將跳到與標籤匹配的循環首部。
格式:continue 標號名 <定義在程序中外層循環語句的前面,用來標識這個循環結構。>
3 return語句
格式:return 表達式;
Break 執行循環體外面的其他語句
Continue 只終止本次循環,而不會影響下次循環。
大數組
如果基本的整數和浮點數精度不能滿足需求,可以用Java Math中的 BigInteger(任意精度的整數運算)和BigDecimal(任意精度的浮點計算)
Eg:BigInteger a = BigInteger.valueOf(100);
//使用靜態的valueOf方法把普通數組轉換爲大數組。
返回這個大整數和另一個大整數的和,差,積,商以及餘數。 int compareTo(BigInteger other) 如果這個大整數小於另外一個大整數,則返回負數; 如果等於,返回0;如果小於,返回正數。 |
BigInteger add(BigInteger other)
BigInteger substract(BigInteger other)
BigInteger multiply(BigInteger other)
BigInteger divide(BigInteger other)
BigInteger mod(BigInteger other)
eg: BigInteger c = a.add(b);//c=a+b
BigInteger d = c.multiply(b.add(BigInteger.valueOf(2)));//d=c*(b+2)
<java 沒有提供運算符的重載功能>
數組
數組是一種數據結構,用來存儲同一類型值得集合。
<在聲明變量時,需要指出數組類型(數組元素類型後跟[]和數組的名字)>
數組初始化器以及匿名數組:
1 一種創建數組對象前同時賦予出是值得簡化書寫形式:
int [] smallPrimes={1,2,5,3,4,6,8,7,9};
2 還可以初始化一個匿名數組:
new int[]{17,19,1,52,5,4,6,3};
使用此種語法形式可以在不創建新變量的情況下重新初始化一個數組。
Eg: smallPrimes = new int[]{1,2,3,4,5,6};
int[] anonymous = {1,2,3,4,5,6};
smallPrimes=anonymous;
數組拷貝
Eg:int[] luckyNumbers=smallPrimes;
luckyNumbers[5]=12;//new smallPrimes is also 12
語法格式:System.arraycopy(from,fromindex,to,toindex,count);
目標數組放置拷貝元素的起始下標 |
目標數組 |
任意類型數組 |
拷貝個數 |
原數組中待拷貝元素的起始下標 |
Eg: int[] smallPrimes = {2,3,5,7,11,13};
int[] luckyNumbers ={12,13,45,56,89,74,58,69,100};
System.out.println(smallPrimes,2,luckyNumbers,3,4);
for(int i=1;i<luckyNumbers.length;i++)
System.out.println(i+”:”+luckyNumbers[i]);
<此方法只複製元素,如果數組元素是引用型變量,則只複製引用,不復制對象實體。>
命令行參數:
<每一個Java應用程序都有一個代String[]args 參數的main方法。這個參數表明main方法將接受一個字符串數組,也即命令行參數。>
注:Java應用程序的main方法中,程序名並沒有存儲在args數組中
Eg: java Message –h world
Args[0] 是 “-h”,而不是“Message”或“Java”。
數組排序
對數值類型數組進行排序,可使用Arrays類中的sort方法
int[] a = new int[10000];
Arrays.sort(a);//使用了優化的快速排序算法。
多維數組
<適用於表示表格或更加複雜的排列形式>
數組:
定義:用於保存相同數據類型的一種機制。
1 是一種引用數據類型。
2 數組可以保存基本數據類型和引用數據類型,但是不能保存在一個數組中。但是在vector集合對象中可以保存不同數據類型。
定義方式: 類型【】 變量名;
類型 變量名【】;
動態賦值:數組的定義,創建,賦值是分開的。
靜態賦值:數組的定義,創建,賦值是一起的。同時根據數組元素的值來指定數組的長度。
在Java中不可以在定義式制定數組長度,在創建數組時來制定數組長度,數組長度最少爲0.
數組內存:數組下標從0開始,到length-1 (length是一個屬性不是一個方法)
Length方法用來得到字符串的字符個數
int 類型的length 調用格式:int a ; a.length
String 類型的length調用格式:String b; b.length();
使用數組變量名加數組下標來得到指定的元素。
Name
Sex age |
Eg:int[] a = new int[3];
Person[] p = new Person[3];
p |
a[0]
a[1]
a[2] |
Name1 Sex1
Age1 |
Name2
Sex2 Age2 |
在創建對象時包含的對象變量指向的任然是原來的堆,而原來的對象變量則指向對象變量所在的棧。
所有的Java對象都存儲在堆中,當一個對象包含另一個對象變量時,這個變量依然包含的是指向兩一個堆對象的指針。
返回值是什麼類型就返回什麼類型!
Eg: int【】 返回類型爲 int【】類型。
int【】【】 返回類型爲 int【】【】類型。
Public int[] Method(){
Int[]a = new int[100];
Return a[];
}
Public int[][] Method(){
Int[][]a = new int[100][100];
Return a[][];
}
多維數組:
定義格式:int【】【】a
int a【】【】
在使用new創建多爲數組時不需要對每一維都指定大小,只需要給出左邊的長度即可。
得到多維數組的元素時通過“數組名+各位的下標”