JAVA語言基礎 +JAVA學習筆記-DAY02

JAVA語言基礎

02.01(常量的概述和使用)(掌握)

  • A:什麼是常量
    • 在程序執行的過程中其值不可以發生改變
  • B:Java中常量的分類
    • 字面值常量
    • 自定義常量(面向對象部分講)
  • C:字面值常量的分類

    • 字符串常量 用雙引號括起來的內容
    • 整數常量 所有整數
    • 小數常量 所有小數
    • 字符常量 用單引號括起來的內容,裏面只能放單個數字,單個字母或單個符號
    • 布爾常量 較爲特殊,只有true和false
    • 空常量 null(數組部分講解)
  • D:案例演示

    • 用輸出語句輸出各種常量。null不演示

02.02(進制概述和二,八,十六進制圖解)(瞭解)

  • A:什麼是進制
    • 進制:就是進位制,是人們規定的一種進位方法。 對於任何一種進制–X進制,就表示某一位置上的數運算時是逢X進一位。二進制就是逢二進一,八進制是逢八進一,十進制是逢十進一,十六進制是逢十六進一。
    • 例如一週有七天,七進制,一年有十二個月,十二進制
  • B:十進制的由來
    • 十進制的由來是因爲人類有十個手指
  • C:二進制的由來
    • 其實二進制來源與中國,請看史料記載
    • 18世紀德國數理哲學大師萊布尼茲從他的傳教士朋友鮑威特寄給他的拉丁文譯本《易經》中,讀到了八卦的組成結構,驚奇地發現其基本素數(0)(1),即《易經》的陰爻yao- -和__陽爻,其進位制就是二進制,並認爲這是世界上數學進制中最先進的。20世紀被稱作第三次科技革命的重要標誌之一的計算機的發明與應用,其運算模式正是二進制。它不但證明了萊布尼茲的原理是正確的,同時也證明了《易經》數理學是很了不起的。
  • D:八進制的由來
    • 任何數據在計算機中都是以二進制的形式存在的。二進制早期由電信號開關演變而來。一個整數在內存中一樣也是二進制的,但是使用一大串的1或者0組成的數值進行使用很麻煩。
    • 所以就想把一大串縮短點,將二進制中的三位用一位表示。這三位可以取到的最大值就是7.超過7就進位了,這就是八進制。
  • E:十六進制的由來
    • 但是對於過長的二進制變成八進制還是較長,所以出現的用4個二進制位表示一位的情況,四個二進制位最大是15,這就是十六進制。
  • F:不同進製表現同一個數據的形式特點
    • 進制越大,表現形式越短

02.03(不同進制數據的表現形式)(掌握)

  • A:二進制的數據表現形式
    • 由0,1組成。以0b(b可以大寫也可以小寫)開頭(JDK1.7版本可以表示二進制了)
  • B:八進制的數據表現形式
    • 由0,1,…7組成。以0開頭
  • C:十進制的數據表現形式
    • 由0,1,…9組成。整數默認是十進制的
  • D:十六進制的數據表現形式
    • 由0,1,…9,a,b,c,d,e,f(大小寫均可)。以0x開頭
  • E:案例演示
    • 輸出不同進製表現100的數據。
    • 0b100 二進制100:表示十進制數4
    • 0100 八進制100:表示64
    • 100 十進制100:表示100
    • 0x100 十六進制100:表示十進制256

02.04(任意進制到十進制的轉換圖解)(瞭解)

  • A:任意進制到十進制的轉換原理
    • 係數:就是每一位上的數據。
    • 基數:X進制,基數就是X。
    • 權:在右邊,從0開始編號,對應位上的編號即爲該位的權。
    • 結果:把係數*基數的權次冪相加即可。
  • B:畫圖練習
    • 二進制–十進制
    • 八進制–十進制
    • 十六進制–十進制

02.05(十進制到任意進制的轉換圖解)(瞭解)

  • A:十進制到任意進制的轉換原理
    • 除積倒取餘
  • B:畫圖練習
    • 十進制–二進制
    • 十進制–八進制
    • 十進制–十六進制

02.06(快速的進制轉換法)(瞭解)

  • A:8421碼及特點
    • 8421碼是中國大陸的叫法,8421碼是BCD代碼中最常用的一種。在這種編碼方式中每一位二值代碼的1都是代表一個固定數值,把每一位的1代表的十進制數加起來,得到的結果就是它所代表的十進制數碼。
  • B:通過8421碼的方式進行二進制和十進制的相互轉換
  • C:二進制到八進制的簡易方式
  • D:二進制到十六進制的簡易方式

02.07(原碼反碼補碼)(瞭解)

  • A:爲什麼要學習原碼反碼補碼?
    • 後面要學習強制類型轉換,如果不知道有原反補會看不懂結果
  • B:有符號數據表示法的幾種方式
    • 原碼
      • 就是二進制定點表示法,即最高位爲符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。
      • 通過一個字節,也就是8個二進制位表示+7和-7
      • 0(符號位) 0000111
      • 1(符號位) 0000111
    • 反碼
      • 正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
    • 補碼
      • 正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。

02.08(原碼反碼補碼的練習)(瞭解)

  • A:已知原碼求補碼
    • 0b1011 0100 負數:反碼:1100 1011 補碼:1100 1100
  • B:已知補碼求原碼
    • 0b11101110 負數:反碼:1110 1101 原碼:1001 0010

02.09(變量的概述及格式)(掌握)

  • A:什麼是變量

    • 在程序執行的過程中,在某個範圍內其值可以發生改變的量
  • B:變量的定義格式

    • 數據類型 變量名 = 變量值;
  • C:爲什麼要定義變量
    • 用來不斷的存放同一類型的常量,並可以重複使用

02.10(數據類型的概述和分類)(掌握)

  • A:爲什麼有數據類型
    • Java語言是強類型語言,對於每一種數據都定義了明確的具體數據類型,在內存中分配了不同大小的內存空間
  • B:Java中數據類型的分類
    • 基本數據類型
    • 引用數據類型
      • 面向對象部分講解
  • C:基本數據類型分類(4類8種)
    • 整數型
      • byte 佔1個字節 -128到127
      • short 佔2個字 -2^15~2^15-1
      • int 佔4個字節 -2^31~2^31-1
      • long 佔8個字節 -2^63~2^63-1
    • 浮點型
      • float 佔4個字節 -3.403E38~3.403E38 單精度
      • double 佔8個字節-1.798E308~1.798E308 雙精度
    • 字符型
      • char 佔兩個字節 0~65535
    • 布爾型
      • boolean
        • boolean理論上是佔八分之一個字節,因爲一個開關就可以決定是true和false了,但是java中boolean類型沒有明確指定他的大小

02.11(定義不同數據類型的變量)(掌握)

  • A:案例演示

    • 定義不同基本數據類型的變量,並輸出
    • 賦值時候注意float類型,long類型

      class DataType {
          public static void main(String[] args) {
              //整數類型
              byte a = 10; //佔1個字節
              short b = 20; //佔2個字節
              int c = 30; //佔4個字節  整數默認的是int類型
              long d = 8888888888L;//佔8個字節  如果long類型後的L最好大寫,因l和1很相似
      
              System.out.println(a);
              System.out.println(b);
              System.out.println(c);
              System.out.println(d);
      
              //浮點型
              float e = 12.3f;  //佔4個字節
              double f = 12.36; //佔8個字節   小數默認是double類型
              System.out.println(e);
              System.out.println(f);
      
              //字符型
              char g = 'd'; //佔2個字節
              System.out.println(g);
      
              //布爾類型
              boolean h = true;
              System.out.println(h);
      
          }
      }
      

02.12(使用變量的注意事項)(掌握)

  • A:案例演示

    • a:作用域問題
      • 同一個區域不能使用相同的變量名
    • b:初始化值問題
      • 局部變量在使用之前必須賦值
    • c:一條語句可以定義幾個變量

      • int a,b,c…;

        class Demo2_DataType {
            public static void main(String[] args) {                    
                int x = 10;
                int x = 20;
        
                System.out.println(x);
        
                int y;
        
                y = 10;
                System.out.println(y);*/
        
                int a,b,c,d,e;
        
                a = 10;
                b = 20;
                c = 30;
                d = 40;
                e = 50;
        
                System.out.println(a);
        
                int x = 10;
                int y = 20;
                int z = 30;
            }
        }
        

02.13(數據類型轉換之隱式轉換)(掌握)

  • A:案例演示
    • a:int + int
    • b:byte + int
  • B:Java中的默認轉換規則
    • 取值範圍小的數據類型與取值範圍大的數據類型進行運算,會先將小的數據類型提升爲大的,再運算
  • C:畫圖解釋byte+int類型的問題

02.14(數據類型轉換之強制轉換)(掌握)

  • A:強制轉換問題
    • int a = 10;
    • byte b = 20;
    • b = a + b;
  • B:強制轉換的格式
    • b = (byte)(a + b);
  • C:強制轉換的注意事項

    • 如果超出了被賦值的數據類型的取值範圍得到的結果會與你期望的結果不同 (去掉前三位)

          class DataTypeConversion {                  //Conversion轉換
              public static void main(String[] args) {
                  //數據類型轉換之隱式轉換
      
                  /*int x = 3;
                  byte b = 4;             
                  x = x + b;              
                  System.out.println(x);*/
      
                  //數據類型轉換之強制轉換
                  /*int x = 3;
                  byte b = 4;             
                  b = (byte)(x + b);
                  System.out.println(b);*/
      
                  //00000000 00000000 00000000  10000010          130的二進制
                  //10000010                                      某個數的補碼  (-126補碼)
                  //10000001                                      補碼-1求反碼得到摸個負數的反碼(-126反碼 )                                       
                  //11111110                                      -126原碼
                  byte b = (byte)(126 + 4);
                  System.out.println(b);  //輸出-126
                  //00000000 00000000 00000001 00101100           300的二進制
                  //00101100                                      44的二進制
                  byte b2 = (byte)300;
                  System.out.println(b2);  //輸出44
              }
          }
      

02.15(面試題之變量相加和常量相加的區別)(掌握)

  • A:案例演示

    • 面試題:看下面的程序是否有問題,如果有問題,請指出並說明理由。

      byte b1 = 3;
      byte b2 = 4;
      byte b3 = b1 + b2;(出錯)
      
    • 從兩方面去回答這個題

      • b1和b2是兩個變量,變量裏面存儲的值都是變化的,所以在程序運行中JVM是無法判斷裏面具體的值
      • byte與byte(或short,char)進行運算的時候會提升爲int,兩個int類型相加的結果也是int類型

         byte b4 = 3 + 4;(不出錯)
        
      • 3和4都是常量,java有常量優化機制,就是在編譯的的時候直接把3和4的結果賦值給b4了

02.16(long與float的取值範圍誰大誰小)(瞭解)

  • 進行混合運算的時候,byte,short,char不會相互轉換,都會自動類型提升爲int類型,其他類型進行混合運算的是小的數據類型提升爲大的

    • byte,short,char – int – long – float – double

    • long: 8個字節


      • float:4個字節
    • IEEE754
    • 4個字節是32個二進制位
    • 1位是符號位
    • 8位是指數位
    • 00000000 11111111
    • 0到255 0代表0 255 代表無窮大
    • 1到254
    • -126到127
    • 23位是尾數位
    • 每個指數位減去127

    • A:它們底層的存儲結構不同。

    • B:float表示的數據範圍比long的範圍要大
      • long:2^63-1
      • float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1

02.17(字符和字符串參與運算)(掌握)

  • A:案例演示

    System.out.println('a');//a
    System.out.println('a'+1);//98
    
    • 通過看結果知道’a’的值是多少,由此引出ASCII碼錶
  • B:ASCII碼錶的概述
    • 記住三個值:
      • ’0’ 48
      • ‘A’ 65
      • ‘a’ 97
  • C:案例演示

  • System.out.println(“hello”+’a’+1);//helloa1
    System.out.println(‘a’+1+”hello”);//98hello
  • D:在有字符串參與中被稱爲字符串連接符

     System.out.println("5+5="+5+5);//5+5=55
     System.out.println("5+5="+(5+5));//5+5=10
     System.out.println(5+5+"=5+5");//10=5+5
    

02.18(char數據類型)(掌握)

  • A:char c = 97; 0到65535
  • B:Java語言中的字符char可以存儲一箇中文漢字嗎?爲什麼呢?
    • 可以。因爲Java語言採用的是Unicode編碼。Unicode編碼中的每個字符佔用兩個字節。中文也是佔的兩個字節
    • 所以,Java中的字符可以存儲一箇中文漢字

02.19(算術運算符的基本用法)(掌握)

  • A:什麼是運算符
    • 就是對常量和變量進行操作的符號。
  • B:運算符的分類
    • 算術運算符,賦值運算符,比較(關係或條件)運算符,邏輯運算符,位運算符,三目(元)運算符
  • C:算數運算符有哪些
    • +,-,*,/,%,++,–
  • D:注意事項:
    • a:+號在java中有三種作用,代表正號,做加法運算,字符串的連接符
    • b:整數相除只能得到整數。如果想得到小數,必須把數據變化爲浮點數類型
    • c:/獲取的是除法操作的商,%獲取的是除法操作的餘數
    • %運算符
      • 當左邊的絕對值小於右邊絕對值時,結果是左邊
      • 當左邊的絕對值等於右邊或是右邊的倍數時,結果是0
      • 當左邊的絕對值大於右邊絕對值時,結果是餘數
      • %運算符結果的符號只和左邊有關係,與右邊無關
      • 任何一個正整數%2結果不是0就是1可以用來當作切換條件

02.20(算術運算符++和–的用法)(掌握)

  • A:++,–運算符的作用
    • 自加(++)自減(–)運算
    • ++:自加。對原有的數據進行+1
    • –:自減。對原有的數據進行-1
  • B:案例演示
    • a:單獨使用:
      • 放在操作數的前面和後面效果一樣。(這種用法是我們比較常見的)
    • b:參與運算使用:
      • 放在操作數的前面,先自增或者自減,然後再參與運算。
      • 放在操作數的後面,先參與運算,再自增或者自減。

02.21(算術運算符++和–的練習)(掌握)

  • A:案例演示

    • 請分別計算出a,b,c的值?
    • int a = 10;
      int b = 10;
      int c = 10;
      
      a = b++;    //a=10 b =11            
      c = --a;    //a=9  c =9         
      b = ++a;    // a=10 b=10            
      a = c--;    //a=9 c =8                              
      
  • B:案例演示

    • 請分別計算出x,y的值?

      int x = 4;
      int y = (x++)+(++x)+(x*10);//y=70,x=6
      
  • C:面試題

    • 問哪句會報錯,爲什麼

      byte b = 10;
      b++; //正確 內部自己加了強制轉換符
      b = b + 1;//報錯 =》 b = (byte)(b + 1)

02.22(賦值運算符的基本用法)(掌握)

  • A:賦值運算符有哪些

    • a:基本的賦值運算符:=

      • 把=右邊的數據賦值給左邊。
    • b:擴展的賦值運算符:+=,-=,*=,/=,%=

      • += 把左邊和右邊做加法,然後賦值給左邊。

02.23(賦值運算符的面試題)(掌握)

  • A:案例演示

    • 面試題:看下面的程序是否有問題,如果有問題,請指出並說明理由。

      short s=1;  s = s+1;//錯誤,需強制轉換
      short s=1;   s+=1;//正確,會自動轉換
      

02.24(關係運算符的基本用法及其注意事項)(掌握)

  • A:關係運算符有哪些(比較運算符,條件運算符)
    • ==,!=,>,>=,<,<=
  • 注意事項:

    • 無論你的操作是簡單還是複雜,結果是boolean類型。

    • “==”不能寫成”=”。

02.25_day02總結

  • 把今天的知識點總結一遍。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章