1. 程式人生 > >第三章 Java的基本程式設計結構

第三章 Java的基本程式設計結構

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。

  1. public static strictfp void main(String[]args):如果一個類標記為strictfp那麼類中所有浮點計算都要使用嚴格浮點計算(也就是說,中間運算的長浮點結果需要截斷)而java語言預設的是不截斷。
  2. floorMod方法取摸,結果總是非負的。解決了x%2,當x為負數,結果總是-1的情況。
  3. ++j和j++的問題,字首形式會先完成加1;而後綴形式會使用變數原來的值。
  4. &&和||兩個操作符,可以利用他們來避免錯誤。因為如&&,表示式1如果為false,那麼表示式2就不用計算了。
  5. x<y?x:y 該表示式非常簡潔地返回了兩者中的較小者。
  6. 位運算子?
  7. 優先順序問題:+=運算子是從右向左.&&運算子的優先順序高於||.
  8. 列舉型別:

3.6字串

  1. 1.join方法(“定界符”,“a”,"b","c")可以連線多個字串並且用定界符分割。
  2. 2.使用equals()【還有equalsIgnoreCase】方法檢查相等而不要使用“==”!
  3. 由較短的字串構建字串。字串連線的話效率較低,於是使用StringBuilder.append()。

3.7輸入輸出

  1. Scnner物件不適合從控制檯讀取密碼。需要使用Console cons=System.console();物件。為了安全,密碼採用字元陣列儲存char[]
  2. printf(%8.2f,x)格式化輸出的方法。、
  3. java.time包進行時間列印。
  4. 舊版的java使用new Date()物件輸出時間。靈活拼接時間的程式碼:
  5. 檔案輸入操作。Scanner in=new Scanner(Paths.get("mytxt.txt"),"UTF-8");
  6. 檔案輸出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())
    

     

  7. 檔案路徑問題,找到當前路徑的方式:如下
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();
}