Java核心技術鞏固篇之控制流程與大數值及數組詳解

前言: 個人已經學習瞭一遍 Java,為瞭鞏固基礎查漏補缺,自己再看一遍核心卷。該文章主要補充瞭一些自己沒有瞭解的、重要的、易忘記的知識點,所以並不是用來專門學習 Java 的文章,而是主要用來幫助大傢鞏固自己的內功的。如果大傢想要看 Java 學習的文章,可以去我的 JavaSE 專欄,裡面都是關於 Java 基礎語法的知識。

1. 控制流程

1.1 塊作用域

【易錯點】: 不能在嵌套的兩個塊中聲明同名變量,如

public static void main(String[] args){
    int n;
    ...
    {
        int n; // Error--can't redefine n in inner block
    }
}

該代碼由於在嵌套的兩個塊中出現瞭同名變量,無法通過編譯

註意:

在 C++ 中,可以在嵌套的塊中重定義一個變量。在內層定義的變量會覆蓋在外層定義的變量。

1.2 條件語句

【易錯點】: 在循環中,檢測兩個浮點數是否相等需要格外註意,如

for(double x=0; x!=10; x+=0.1);

上述循環不會結束,因為 0.1 無法精確的用二進制表示,所以 x 將從 9.99999999999998 跳到 10.09999999999998。

【補充點】: switch 語句中的 case 分支語句如果末尾不加 break,其實是一種較危險的情況。所以使用 switch 語句編譯代碼時可以這樣寫 javac -Xlint:fallthrough 文件名.java。這樣寫的話如果某個分支某位缺少 break,編譯器就會報警告。如果你就是需要有些分支後面不加 break,可以為其外圍方法加一個標註 @SuppressWarnings("fallthrough"),這樣就不會對方法生成警告。

【補充點】: Java 沒有 goto 語句,但 break 可以帶標簽,可以利用它實現從內層循環跳出的目的。如

int n;
read_data:
while(){
    for(){
        ...
        break read_data;
        ...
    }
}

註意:

該方式隻能跳出語句塊,而不能跳入語句塊

2. 大數值

【補充點】: 如果基本的整數和浮點數不能滿足需求,可以使用 java.math 包中的兩個類:BigIntegerBigDecinmal。這兩個類可以處理包含任意長度數字序列的數值。BigInteger 類實現瞭任意精度的整數運算,BigDecinmal 實現瞭任意精度的浮點型數運算

3. 數組

【易錯點】: Java 中的數組長度不要求是常量,如 new int[n] 會創建一個長度為 n 的數組。但是確定 n 的值之後就不能改變。

3.1 命令行參數

【補充點】:每一個 Java 應用程序都有一個帶 String[] args 參數的 main 方法。這個參數表明 main 方法將接受一個字符串數組,也就是命令行參數。如

public class Message{
    public static void main(String[] args){
        if(args.length==0||args[0].equals("-h")){
            System.out.print("Hello,");
        }else if(args[0].equlas("-g")){
            System.out.print("Goodbye,");
        }
        for(int i=1;i<args.length;i++){
            System.out.print(" "+args[i]);
        }
    }
}

如果我們在命令行使用下面這種形式運行這個程序:java Message -g cruel world ,將顯示下列信息 Goodbye, cruel world!

這表明 args 數組內存的內容如下:args[0]="-g",args[1]="cruel",args[2]="world"

註意:

在 Java 應用程序的 main 方法中,程序名並沒有儲存在 args 數組中

以上就是Java核心技術鞏固篇之控制流程 大數值 數組詳解的詳細內容,更多關於Java 控制流程的資料請關註WalkonNet其它相關文章!

推薦閱讀: