第三章 Java的基本程式設計結構
阿新 • • 發佈:2018-12-08
system.out.printlin("Hello");
此句是呼叫了system.out物件的println()方法。
3.3資料型別
0b:二進位制 0x or 0X:16進位制
double多數情況下不能滿足需求,float型別的數值需要新增字尾F或者是f。
註釋:二進位制系統不能正確表示1/10,正如十進位制系統不能表示1/3.
char型別的數值表示為16進位制的範圍:\u0000~\Uffff。是\u後面跟著一個四位的六進位制數。
關於Unicode和char型別:
什麼是碼點?是指一個編碼表中某個字元對應的程式碼值。Unicode標準中,碼點用16進制書寫,加上字首U+。Utf16採用不同的長度表示所有的碼點。強烈建議不要在程式中使用char型別。
3.4變數
逐行宣告變數可以提高程式的可讀性。並且,變數的宣告儘可能的靠近程式第一次使用的地方。
final宣告常量,並且常量名全大寫。
3.5運算子
整數被0除產生異常,浮點數被0除會得到無窮大或NaN。
- public static strictfp void main(String[]args):如果一個類標記為strictfp那麼類中所有浮點計算都要使用嚴格浮點計算(也就是說,中間運算的長浮點結果需要截斷)而java語言預設的是不截斷。
- floorMod方法取摸,結果總是非負的。解決了x%2,當x為負數,結果總是-1的情況。
- ++j和j++的問題,字首形式會先完成加1;而後綴形式會使用變數原來的值。
- &&和||兩個操作符,可以利用他們來避免錯誤。因為如&&,表示式1如果為false,那麼表示式2就不用計算了。
- x<y?x:y 該表示式非常簡潔地返回了兩者中的較小者。
- 位運算子?
- 優先順序問題:+=運算子是從右向左.&&運算子的優先順序高於||.
- 列舉型別:
3.6字串
- 1.join方法(“定界符”,“a”,"b","c")可以連線多個字串並且用定界符分割。
- 2.使用equals()【還有equalsIgnoreCase】方法檢查相等而不要使用“==”!
- 由較短的字串構建字串。字串連線的話效率較低,於是使用StringBuilder.append()。
3.7輸入輸出
- Scnner物件不適合從控制檯讀取密碼。需要使用Console cons=System.console();物件。為了安全,密碼採用字元陣列儲存char[]
- printf(%8.2f,x)格式化輸出的方法。、
- java.time包進行時間列印。
- 舊版的java使用new Date()物件輸出時間。靈活拼接時間的程式碼:
- 檔案輸入操作。Scanner in=new Scanner(Paths.get("mytxt.txt"),"UTF-8");
- 檔案輸出PrintWriter out=new PrintWriter("myfile.txt","UTF-8")若不存在,則建立新檔案。
printf("%1$s %2$tB %2$te,%2$tY","Due date:",new Date()) printf("%s %tB %<te,%<tY","Due date:",new Date())
- 檔案路徑問題,找到當前路徑的方式:如下
String dir=System.getProperty("user.dir")
8. main方法的throws子句標記可能會出現的異常。
3.8控制流程
使用帶有標籤的語句塊,可以使用break跳到塊的末尾。
lable:
{
if(condition){
break lable;
}
}
break和continue完全是可選的,不使用也可表達相同的含義。故本書沒有使用、。
3.9大數值
BIgInteger和BigDecimal實現了任意精度的浮點數運算。
BigInteger d=c.multiply(b.add(BigInteger.valueOf(200)))
3.10陣列
陣列的預設初始化:數值陣列0,布林陣列false,物件陣列為0.
匿名陣列在不建立新變數的情況下重新初始化一個數組:
smallPrimes=new int[]{1,2,3,4}
陣列拷貝:
int[] copiedLuckynumbers=Arrays.copyOf(luckynumbers,2*luckynumbers.length);
二維陣列的快速列印方法:
int [][]a={{1,2},{3,4}};
System.out.println(Arrays.deepTOString(a));
不規則陣列的列印方法:(先分配固定行數的二維陣列,然後分配每一行。)
int[][]odds=new int[NMAX][];
for(int n=0;n<=NMAX;n++){
odds[n]=new int[n*n];
}
//訪問方法
for(int[] row:odds)
{
for(int odd:row)
System.ot.println("%4d",odd);
System.out.println();
}