Debug模式


什么是Debug模式

是供程序員使用的程序調試工具,它可以用於查看程序的執行流程,也可以用於追蹤程序執行過程來調試程序。

Debug介紹與操作流程

  • 如何加斷點

    • 選擇要設置斷點的代碼行,在行號的區域后面單擊鼠標左鍵即可

  • 如何運行加了斷點的程序

    • 在代碼區域右鍵Debug執行

  • 看哪里

    • 看Debugger窗口

    • 看Console窗口

  • 點哪里

    • 點Step Into (F7)這個箭頭,也可以直接按F7

  • 如何刪除斷點

    • 選擇要刪除的斷點,單擊鼠標左鍵即可

    • 如果是多個斷點,可以每一個再點擊一次。也可以一次性全部刪除

進制的介紹與書寫格式

進制的介紹與書寫格式

代碼 :

public class Demo1 {
    /*
        十進制:Java中,數值默認都是10進制,不需要加任何修飾。
        二進制:數值前面以0b開頭,b大小寫都可以。
        八進制:數值前面以0開頭。
        十六進制:數值前面以0x開頭,x大小寫都可以。

        注意: 書寫的時候, 雖然加入了進制的標識, 但打印在控制台展示的都是十進制數據.
     */
    public static void main(String[] args) {
        System.out.println(10);
        System.out.println("二進制數據0b10的十進制表示為:" + 0b10);
        System.out.println("八進制數據010的十進制表示為:" + 010);
        System.out.println("十六進制數據0x10的十進制表示為:" + 0x10);
    }
}

任意進制到十進制的轉換

進制轉換-十進制到任意進制轉換

十進制到二進制的轉換

公式:除基取余使用源數據,不斷的除以基數(幾進制,基數就是幾)得到余數,直到商為0,再將余數倒着拼起來即可。

需求:將十進制數字11,轉換為2進制。

實現方式:源數據為11,使用11不斷的除以基數,也就是2,直到商為0。

十進制到十六進制的轉換

公式:除基取余使用源數據,不斷的除以基數(幾進制,基數就是幾)得到余數,直到商為0,再將余數倒着拼起來即可。

需求:將十進制數字60,轉換為16進制。

實現方式:源數據為60,使用60不斷的除以基數,也就是16,直到商為0。

結論:十進制到任意進制的轉換

公式:除基取余使用源數據,不斷的除以基數(幾進制,基數就是幾)得到余數,直到商為0,再將余數倒着 拼起來即可

快速進制轉換法

8421碼:

8421碼又稱BCD碼,是BCD代碼中最常用的一種BCD: (Binary-Coded Decimal‎) 二進制碼十進制數在這種編碼方式中,每一位二進制值的1都是代表一個固定數值,把每一位的1代表的十進制數加起來得到的結果就是它所代表的十進制數。

原碼反碼補碼

前言 : 計算機中的數據,都是以二進制補碼的形式在運算,而補碼則是通過反碼和原碼推算出來的

原碼 :(可直觀看出數據大小)

就是二進制定點表示法,即最高位為符號位,【0】表示正,【1】表示負,其余位表示數值的大小。

通過一個字節表示+7和-7,代碼:byte b1 = 7; byte b2 = -7;一個字節等於8個比特位,也就是8個二進制位

0(符號位) 0000111

1(符號位) 0000111

反碼 : 正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。

補碼 : (數據以該狀態進行運算)正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。

位運算-基本位運算符

package com.yyj.demo;

public class Demo2 {
    /*
        位運算:

            位運算符指的是二進制位的運算,先將十進制數轉成二進制后再進行運算。
            在二進制位運算中,1表示true,0表示false。

             & 位與 : 遇false則false, 遇0則0

                        00000000 00000000 00000000 00000110     // 6的二進制
                     &  00000000 00000000 00000000 00000010     // 2的二進制
                    -----------------------------------------
                        00000000 00000000 00000000 00000010     // 結果: 2

             | 位或 : 遇true則true, 遇1則1

             ^ 位異或 : 相同為false, 不同為true

             ~ 取反 : 全部取反, 0變1, 1變0  (也包括符號位)

                    00000000 00000000 00000000 00000110         // 6的二進制補碼
                  ~ 11111111 11111111 11111111 11111001

                  -                                   1         // -1求反碼
                   ------------------------------------
                    11111111 11111111 11111111 11111000         // 反碼推原碼

                    10000000 00000000 00000000 00000111         // -7
     */
    public static void main(String[] args) {
        System.out.println(6 & 2);
        System.out.println(~6);
    }
}

位運算-位移運算符

位運算概述 : 位運算符指的是二進制位的運算,先將十進制數轉成二進制后再進行運算。在二進制位運算中,1表示true,0表示false。

位運算符介紹 :

 代碼 :

package com.yyj.demo;

public class Demo3 {
    /*
       位移運算符:

               << 有符號左移運算,二進制位向左移動, 左邊符號位丟棄, 右邊補齊0
                        運算規律: 向左移動幾位, 就是乘以2的幾次冪

                                12 << 2

                                (0)0000000 00000000 00000000 000011000  // 12的二進制

       -----------------------------------------------------------------------------
               >> 有符號右移運算,二進制位向右移動, 使用符號位進行補位
                        運算規律: 向右移動幾位, 就是除以2的幾次冪

                                000000000 00000000 00000000 0000001(1)  // 3的二進制

       -----------------------------------------------------------------------------

                >>> 無符號右移運算符,  無論符號位是0還是1,都補0

                                010000000 00000000 00000000 00000110  // -6的二進制

     */
    public static void main(String[] args) {
        System.out.println(12 << 1);  // 24
        System.out.println(12 << 2);  // 48

    }
}
View Code
package com.yyj.demo;

public class Demo4 {
    /*
        ^ 運算符的特點

                一個數, 被另外一個數, 異或兩次, 該數本身不變
     */
    public static void main(String[] args) {
        System.out.println(10 ^ 5 ^ 10);
    }
}

基礎練習

數據交換

案例需求

已知兩個整數變量a = 10,b = 20,使用程序實現這兩個變量的數據交換 最終輸出a = 20,b = 10;

代碼實現

package com.yyj.test;

public class Test1 {
    /*
        需求:已知兩個整數變量a = 10,b = 20,使用程序實現這兩個變量的數據交換
        最終輸出a = 20,b = 10;


        思路:
        1. 定義一個三方變量temp,將a原本記錄的值,交給temp記錄 (a的值,不會丟了)
        2. 使用 a 變量記錄 b 的值,(第一步交換完畢,b的值也丟不了了)
        3. 使用 b 變量記錄 temp的值,也就是a原本的值 (交換完畢)
        4. 輸出 a 和 b 變量即可
     */
    /*
        動態初始化格式:

            數據類型[][] 變量名 = new 數據類型[m][n];
            m表示這個二維數組,可以存放多少個一維數組
            n表示每一個一維數組,可以存放多少個元素
     */
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        // 將a原本記錄的值,交給temp記錄 (a的值,不會丟了)
        int temp = a;
        // 用 a 變量記錄 b 的值,(第一步交換完畢,b的值也丟不了了)
        a = b;
        // 使用 b 變量記錄 temp的值,也就是a原本的值 (交換完畢)
        b = temp;

        // 輸出 a 和 b 變量即可
        System.out.println("a=" + a);
        System.out.println("b=" + b);
    }
}
View Code

數組反轉【應用】

案例需求 :

已知一個數組 arr = {19, 28, 37, 46, 50}; 用程序實現把數組中的元素值交換,

交換后的數組 arr = {50, 46, 37, 28, 19}; 並在控制台輸出交換后的數組元素

實現步驟 :

  1. 定義兩個變量, start和end來表示開始和結束的指針.

  2. 確定交換條件, start < end 允許交換

  3. 循環中編寫交換邏輯代碼

  4. 每一次交換完成, 改變兩個指針所指向的索引 start++, end--

  5. 循環結束后, 遍歷數組並打印, 查看反轉后的數組

代碼實現 :

package com.yyj.test;

public class Test2 {
    /*
        需求:已知一個數組 arr = {19, 28, 37, 46, 50}; 用程序實現把數組中的元素值交換,
          交換后的數組 arr = {50, 46, 37, 28, 19}; 並在控制台輸出交換后的數組元素。

        步驟:
              1. 定義兩個變量, start和end來表示開始和結束的指針.
              2. 確定交換條件, start < end 允許交換
              3. 循環中編寫交換邏輯代碼
              4. 每一次交換完成, 改變兩個指針所指向的索引 start++, end--
              5. 循環結束后, 遍歷數組並打印, 查看反轉后的數組
     */
    public static void main(String[] args) {
        int[] arr = {19, 28, 37, 46, 50};
        //  1. 定義兩個變量, start和end來表示開始和結束的指針.
        int start = 0;
        int end = arr.length -1;
        //  2. 確定交換條件, start < end 允許交換
        // 4. 每一次交換完成, 改變兩個指針所指向的索引 start++, end--
        // for(int start = 0, end = arr.length -1; start < end; start++, end--)
        for( ; start < end; start++, end--){
            // 3. 循環中編寫交換邏輯代碼
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}
View Code

二維數組概述

概述 : 二維數組也是一種容器,不同於一維數組,該容器存儲的都是一維數組容器

二維數組動態初始化

動態初始化格式:

數據類型[][] 變量名 = new 數據類型[m][n];
m表示這個二維數組,可以存放多少個一維數組
n表示每一個一維數組,可以存放多少個元素
package com.yyj.demo;

public class Demo1Array {
    /*
        動態初始化格式:

            數據類型[][] 變量名 = new 數據類型[m][n];
            m表示這個二維數組,可以存放多少個一維數組
            n表示每一個一維數組,可以存放多少個元素
     */
    public static void main(String[] args) {
        // 數據類型[][] 變量名 = new 數據類型[m][n];
        int[][] arr = new int[3][3];
        /*
            [[I@10f87f48

            @ : 分隔符
            10f87f48 : 十六進制內存地址
            I : 數組中存儲的數據類型
            [[ : 幾個中括號就代表的是幾維數組
         */
        System.out.println(arr);

        /*
            二維數組存儲一維數組的時候, 存儲的是一維數組的內存地址
         */
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);

        System.out.println(arr[0][0]);
        System.out.println(arr[1][1]);
        System.out.println(arr[2][2]);

        // 向二維數組中存儲元素
        arr[0][0] = 11;
        arr[0][1] = 22;
        arr[0][2] = 33;

        arr[1][0] = 11;
        arr[1][1] = 22;
        arr[1][2] = 33;

        arr[2][0] = 11;
        arr[2][1] = 22;
        arr[2][2] = 33;

        // 從二維數組中取出元素並打印
        System.out.println(arr[0][0]);
        System.out.println(arr[0][1]);
        System.out.println(arr[0][2]);
        System.out.println(arr[1][0]);
        System.out.println(arr[1][1]);
        System.out.println(arr[1][2]);
        System.out.println(arr[2][0]);
        System.out.println(arr[2][1]);
        System.out.println(arr[2][2]);
    }
}
View Code

二維數組訪問元素的細節問題

問題 : 二維數組中存儲的是一維數組, 那能不能存入 [提前創建好的一維數組] 呢 ?答:可以

代碼實現

package com.yyj.demo;

public class Demo2Array {
    /*
        問題: 二維數組中存儲的是一維數組, 那能不能存入 [提前創建好的一維數組] 呢 ?
        答 : 可以的
     */
    public static void main(String[] args) {
        int[] arr1 = {11,22,33};
        int[] arr2 = {44,55,66};
        int[] arr3 = {77,88,99,100};

        int[][] arr = new int[3][3];

        arr[2][3] = 100;

        arr[0] = arr1;
        arr[1] = arr2;
        arr[2] = arr3;

        System.out.println(arr[1][2]);
        System.out.println(arr[2][3]);
    }
}
View Code

二維數組靜態初始化

完整格式 : 數據類型 變量名 = new 數據類型{ {元素1, 元素2...} , {元素1, 元素2...}

簡化格式 : 數據類型 變量名 = { {元素1, 元素2...} , {元素1, 元素2...} ...};

代碼實現 :

package com.yyj.demo;

public class Demo3Array {
    /*
        完整格式:數據類型[][] 變量名 = new 數據類型[][]{ {元素1, 元素2...} , {元素1, 元素2...} ...};

        簡化格式: 數據類型[][] 變量名 = { {元素1, 元素2...} , {元素1, 元素2...} ...};
     */
    public static void main(String[] args) {
        int[] arr1 = {11,22,33};
        int[] arr2 = {44,55,66};

        int[][] arr = {{11,22,33}, {44,55,66}};
        System.out.println(arr[0][2]);

        int[][] array = {arr1,arr2};
        System.out.println(array[0][2]);
    }
}
View Code

二維數組遍歷

需求 :

已知一個二維數組 arr = {{11, 22, 33}, {33, 44, 55}};

遍歷該數組,取出所有元素並打印

步驟 :

  1. 遍歷二維數組,取出里面每一個一維數組

  2. 在遍歷的過程中,對每一個一維數組繼續完成遍歷,獲取內部存儲的每一個元素

代碼實現 :

package com.yyj.test;

public class Test1 {
    /*
        需求:

            已知一個二維數組 arr = {{11, 22, 33}, {33, 44, 55}};
            遍歷該數組,取出所有元素並打印

        步驟:
            1. 遍歷二維數組,取出里面每一個一維數組
            2. 在遍歷的過程中,對每一個一維數組繼續完成遍歷,獲取內部存儲的每一個元素
     */
    public static void main(String[] args) {
        int[][] arr = {{11, 22, 33}, {33, 44, 55}};

        // 1. 遍歷二維數組,取出里面每一個一維數組
        for (int i = 0; i < arr.length; i++) {
            //System.out.println(arr[i]);
            // 2. 在遍歷的過程中,對每一個一維數組繼續完成遍歷,獲取內部存儲的每一個元素
            //int[] temp = arr[i];
            for (int j = 0; j < arr[i].length; j++) {
                System.out.println(arr[i][j]);
            }
        }
    }
}
View Code

二維數組求和

需求 :

某公司季度和月份統計的數據如下:單位(萬元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,66,99

步驟 :

  1. 定義求和變量,准備記錄最終累加結果

  2. 使用二維數組來存儲數據,每個季度是一個一維數組,再將4個一維數組裝起來

  3. 遍歷二維數組,獲取所有元素,累加求和

  4. 輸出最終結果

代碼實現 :

package com.yyj.test;

public class Test2 {
    /*
        需求:
            某公司季度和月份統計的數據如下:單位(萬元)
            第一季度:22,66,44
            第二季度:77,33,88
            第三季度:25,45,65
            第四季度:11,66,99

        步驟:
            1. 定義求和變量,准備記錄最終累加結果
            2. 使用二維數組來存儲數據,每個季度是一個一維數組,再將4個一維數組裝起來
            3. 遍歷二維數組,獲取所有元素,累加求和
            4. 輸出最終結果
     */
    public static void main(String[] args) {
        // 1. 定義求和變量,准備記錄最終累加結果
        int sum = 0;
        // 2. 使用二維數組來存儲數據,每個季度是一個一維數組,再將4個一維數組裝起來
        int[][] arr = { {22,66,44} , {77,33,88} , {25,45,65} , {11,66,99}};
        // 3. 遍歷二維數組,獲取所有元素,累加求和
        for (int i = 0; i < arr.length; i++) {
            for(int j = 0; j < arr[i].length; j++){
                sum += arr[i][j];
            }
        }
        // 4. 輸出最終結果
        System.out.println(sum);
    }
}
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM