Variable 變量 變數
1. 有分大小寫
2. 字母,數字,下底線與$組合
3. 開頭(建議)為字母
4. 不允許空白
5. 不能為關鍵字(Keyword)或保留字(reserved word)
(建議)使用相關的字符,而非單字母表示
變量只有一個字詞則全小寫,多字詞則下個字首大寫
變亮為恆定植,多點變化(全大寫,以下底線組合)
Primitive Data Types 資料型態
byte
8-bit signed two's complement integer
-128~127
大量使用array時可替用以省空間
short
16-bit signed two's complement integer
-32768~32767
大量使用array時可替用以省空間
int
32-bit signed two's complement integer
-2^31~(2^31)-1
0~(2^32)-1
integer class的default單位
[額外的func :
compareUnsigned
, divideUnsigned
]long
64-bit signed two's complement integer
-2^63~(2^63)-1
0~(2^64)-1
[int func也有額外提供long的使用]
float
single-precision 32-bit IEEE 754 floating point
大量使用array時可替用以省空間(相較於double)
[額外func : java.math.BigDecimal]
double
double-precision 64-bit IEEE 754 floating point
boolean
true
and false
one bit informationchar
single 16-bit Unicode character
a minimum value of
'\u0000'
(or 0) and a maximum value of '\uffff'
(or 65,535 inclusive)Array 陣列
1.
int[ ] anArray; // 宣告,也可以用 int anArray[ ];
anArray = new int[10]; // 配置,用new新增一個物件
或是
int[ ] anArray = {
100, 200, 300,
400, 500, 600,
700, 800, 900, 1000
};
2.
二維陣列
String[ ][ ] names = {
{"Mr. ", "Mrs. ", "Ms. "},
{"Smith", "Jones"}
};
// Mr. Smith
System.out.println(names[0][0] + names[1][0]);
// Ms. Jones
System.out.println(names[0][2] + names[1][1]);
順序 : row major
3.
System.out.println(anArray.length);
印出長度
4.
System.arraycopy(A, i, B, j, n);
System.out.println(new String(B));
從A陣列的第i元素複製n個元素,到B陣列的第j元素起始貼
new String(?!)
5.
char[] B = java.util.Arrays.copyOfRange(A, 2, 9);
System.out.println(new String(copyTo));
java.util.Arrays.copyOfRange
Operator 運算子
Operators | Precedence |
---|---|
postfix | expr++ expr-- |
unary | ++expr --expr +expr -expr ~ ! |
multiplicative | * / % |
additive | + - |
shift | << >> >>> |
relational | < > <= >= instanceof |
equality | == != |
bitwise AND | & |
bitwise exclusive OR | ^ |
bitwise inclusive OR | | |
logical AND | && |
logical OR | || |
ternary | ? : |
assignment | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
2.
int i = 5;
System.out.println(i);
System.out.println(++i); // prints 6
System.out.println(i++); // prints 6
System.out.println(i); // prints 7
3.
?:與C一樣,是個if-then-else,true則是:的左邊return;flase則是右邊return
int value1 = 1; int value2 = 2; int result; boolean someCondition = true; result = someCondition ? value1 : value2; System.out.println(result);
// output "1"
4.
bitwise and[&] / or[|] / exclusive or[^]
(以bit為單位的and / or / exclusive or)
perform bitwise and bit shift[>> <<] operations on integral types
(以int type來表示)
int bitmask = 0x000F; int val = 0x2222; System.out.println(val & bitmask);
// prints "2"
Control flow statement 條件判斷式
1.
if-else
if-else if-else
2.
switch
int month = 8; String monthString; switch (month) { case 1: monthString = "January"; break; case 2: monthString = "February"; break;
︴
default: monthString = "Invalid month"; break;
3.
閏年
int month = 2; int year = 2000; int numDays = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9: case 11: numDays = 30; break; case 2: if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0))
// 閏年條件式:O
numDays = 29; else numDays = 28; break; default: System.out.println("Invalid month."); break; } System.out.println("Number of Days = " + numDays);
4.
while (true){ // your code goes here }
而
do { statement(s) } while (expression);
do-while會停止在最後狀態,不會多做一次
5.
for (i = 0; i < arrayOfInts.length; i++) {
if (arrayOfInts[i] == searchfor) {
foundIt = true;
break;
}
}
跳出當前的state,範例中就是for
或是用BreakWithLabel的方式...
public static void main(String[] args) { int[][] arrayOfInts = { { 32, 87, 3, 589 }, { 12, 1076, 2000, 8 }, { 622, 127, 77, 955 } }; int searchfor = 12; int i; int j = 0; boolean foundIt = false; search: for (i = 0; i < arrayOfInts.length; i++) { for (j = 0; j < arrayOfInts[i].length; j++) { if (arrayOfInts[i][j] == searchfor) { foundIt = true; break search; } } } if (foundIt) { System.out.println("Found " + searchfor + " at " + i + ", " + j); } else { System.out.println(searchfor + " not in the array"); }
利用label跳出當前的狀態,注意這邊for兩圈都跳出
6.
for (int i = 0; i < max; i++) { // interested only in p's if (searchMe.charAt(i) != 'p') continue; // process p's numPs++; }
continue略過loop中後段的程式,進入下一次的loop描述
因次只有符合條件式,才會計算continue後的程式
7.
String searchMe = "Look for a substring in me"; String substring = "sub"; boolean foundIt = false; int max = searchMe.length() - substring.length(); test: for (int i = 0; i <= max; i++) { int n = substring.length(); int j = i; int k = 0; //每次更新index會歸零 while (n-- != 0) { if (searchMe.charAt(j++) != substring.charAt(k++)) { continue test; } } foundIt = true; break test; } System.out.println(foundIt ? "Found it" : "Didn't find it");
沒有留言:
張貼留言