讀書筆記——《Java核心編程》

一、檢測字符串是否相等,可使用equals方法檢測,相等返回true,不然返回false。必定不能用==運算符檢測,緣由是這個運算符只可以肯定兩個字符串是否放置在同一個位置上。固然若是字符串放置在同一個位置上,他們必然相等,可是,徹底有可能將內容相同的多個字符串的拷貝放置在不一樣的位置上。實際上虛擬機中只有字符串常量是共享的(即放置在同一個位置),而用+或substring等操做產生的結果並非共享的。因此極可能會產生那種隨機產生的間歇性的bug。java

二、if/else語句的流程圖:算法

上圖是if - elseif - else語句流程圖,switch是另一種變種的if - elseif - else 語句api

三、while的流程圖數組

四、do-while的流程圖:網絡

五、for語句的流程圖優化

 

注:圖片爲網絡拷貝的,若有侵權請告知設計

六、java中的標籤code

Java 中的標籤是爲循環設計的,是爲了在多重循環中方便的使用break 和coutinue 。如下實例當在循環中使用 break 或 continue 循環時跳到指定的標籤處:對象

public static void main(String[] args) {
        // 標籤名: 
        // 標籤是配合continue和break來使用,break out; 在標籤名爲out的後面的全部循環終止
        // continue out; 跳事後面的全部內容,從標籤名爲out處開始下一次迭代循環
        // 標籤後面必須是循環
        // 通常適用於嵌套循環
        boolean b = true;
        int i = 0;
        System.out.println("外層循環開始執行");
        out: while (b) {
            i++;
            System.out.println("內層循環開始執行");
            int j = 0;
            in: while (b) {
                j++;
                if (j == 5) {
                    System.out.println("內層continue");
                    continue;
                }
                if (j == 10) {
                    System.out.println("內層break");
                    break in;
                }
                System.out.println("j=" + j);
            }

            if (i == 3) {
                System.out.println("外層continue");
                continue;
            }
            if (i == 5) {
                System.out.println("外層break");
                break;
            }
            System.out.println("i=" + i);
        }
        System.out.println("程序結束");
}

七、數組的一些api排序

System.arrayCopy(Object from,int fromIndex,Object to,int toIndex,int count)
  將第一個數組中的元素拷貝到第二個數組中,就是把from中的元素從from開始拷貝count個元素到to數組的toIndex後
  from 任意類型的數組
  fromIndex 原始數組中待拷貝元素的起始下標
  to  與from同類型的數組
  toIndex 目標數組中放置拷貝元素的起始下標
  count 拷貝元素數量

Arrays中操做數組的方法
  copyOf(type[] a ,int start,int end)
  和上面的方法做用相似

  toString(type[] a)
  返回a中數據元素的字符串,這些數據元素被放在括號內,並用逗號分隔,這個經常使用於一維數組,若是多維數組的會要用deepToString

  sort(type[] a)
  對a數組進行排序,採用的是優化的快速排序法

  binarySearch(type[] a,type v)
  採用二分搜索算法查找值v,若是查找成功返回響應的下標值,失敗返回負數

八、方法參數,值調用表示方法接收的是調用者提供的值,而引用調用表示方法接收的是調用者提供的變量地址。一個方法能夠修改傳遞引用所對應的值,而不能修改傳遞值調用所對應的變量值。值得注意的是,對象引用採用的也是值傳遞,若是想經過一個方法去交換兩個對象的引用是不可能成功的,如:

swap(Employee a, Employee b){
  Employee temp = a;
  a = b;
  b = temp;
}

這個是不能成功的,傳遞進來的a和b只是一個對象引用拷貝,這個只能交換兩個對象的引用拷貝,在方法介紹後,a和b被拋棄。

總結:一個方法不能修改一個基本數據類型的參數

一個方法能修改一個對象參數的狀態

一個方法不能實現讓對象參數引用另外一個新的對象

相關文章
相關標籤/搜索