Java編程基礎02——Java語言基礎

1_(常量的概述和使用)*

  • A:什麼是常量(constant)java

    • 在程序執行的過程當中其值不能夠發生改變
  • B:Java中常量的分類面試

    • 字面值常量
    • 自定義常量(面向對象部分講)
  • C:字面值常量的分類數組

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

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

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

  • A:什麼是進制(scale)優化

    • 進制:就是進位制,是人們規定的一種進位方法。 對於任何一種進制--X進制,就表示某一位置上的數運算時是逢X進一位。二進制就是逢二進一,八進制是逢八進一,十進制是逢十進一,十六進制是逢十六進一。
    • 例如一週有七天,七進制,一年有十二個月,十二進制
    • 星星和月亮的進制,月亮和太陽的進制(4進制)
  • B:十進制的由來編碼

    • 十進制的由來是由於人類有十個手指(獵物的分配:十個一捆)
  • C:二進制的由來code

    • 其實二進制來源與中國,請看史料記載
    • 18世紀德國數理哲學大師萊布尼茲從他的傳教士朋友鮑威特寄給他的拉丁文譯本《易經》中,讀到了八卦的組成結構,驚奇地發現其基本素數(0)(1),即《易經》的陰爻yao- -和__陽爻,其進位制就是二進制,並認爲這是世界上數學進制中最早進的。20世紀被稱做第三次科技革命的重要標誌之一的計算機的發明與應用,其運算模式正是二進制。它不但證實了萊布尼茲的原理是正確的,同時也證實了《易經》數理學是很了不得的。
  • D:八進制的由來orm

    • 任何數據在計算機中都是以二進制的形式存在的。二進制早期由電信號開關演變而來。一個整數在內存中同樣也是二進制的,可是使用一大串的1或者0組成的數值進行使用很麻煩。
    • 因此就想把一大串縮短點,將二進制中的三位用一位表示。這三位能夠取到的最大值就是7.超過7就進位了,這就是八進制。
  • E:十六進制的由來對象

    • 可是對於過長的二進制變成八進制仍是較長,因此出現的用4個二進制位表示一位的狀況,四個二進制位最大是15,這就是十六進制。
  • F:不一樣進製表現同一個數據的形式特色內存

    • 進制越大,表現形式越短
    • 畫圖表示(讓8個開關表示計算機中的最小單位)

3_(不一樣進制數據的表現形式)*

  • 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
    • 0100
    • 100
    • 0x100

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

  • A:任意進制到十進制的轉換原理

    • 係數:就是每一位上的數據。
    • 基數:X進制,基數就是X。
    • 權:在右邊,從0開始編號,對應位上的編號即爲該位的權。
    • 結果:把係數*基數的權次冪相加便可。
  • B:畫圖練習(~Scale)

    • 二進制--十進制
    • 八進制--十進制
    • 十六進制--十進制

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

  • A:十進制到任意進制的轉換原理

    • 除基倒取餘
  • B:畫圖練習

    • 十進制--二進制
    • 十進制--八進制
    • 十進制--十六進制

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

  • A:8421碼及特色

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

7_(原碼反碼補碼)(瞭解)

  • A:爲何要學習原碼反碼補碼?

    • 後面要學習強制類型轉換,若是不知道有原反補會看不懂結果
  • B:有符號數據表示法的幾種方式

    • 原碼

      • 就是二進制定點表示法,即最高位爲符號位,「0」表示正,「1」表示負,其他位表示數值的大小。
      • 經過一個字節,也就是8個二進制位表示+7和-7
      • 0(符號位) 0000111 +7
      • 1(符號位) 0000111 -7
      • 1 1111000 -7反碼
      • 0 0000001 +1
      • _
      • 1 1111001 -7的補碼

        0 0000111
        1 1111001

_______________________________
       00000000


    
* 反碼
    * 正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
* 補碼
    * 正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。

8_(原碼反碼補碼的練習)(瞭解)

  • A:已知原碼求補碼

    • 0b10110100
  • B:已知補碼求原碼

    • 0b11101110

9_(變量的概述及格式)*

  • A:什麼是變量

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

    • 數據類型 變量名 = 變量值;
  • C:爲何要定義變量

    • 用來不斷的存放同一類型的常量,並能夠重複使用

10_(數據類型的概述和分類)*

  • A:爲何有數據類型

    • Java語言是強類型語言,對於每一種數據都定義了明確的具體數據類型,在內存中分配了不一樣大小的內存空間(你能吃多少飯,就給你多大的碗)
  • B:Java中數據類型的分類

    • 基本數據類型
    • 引用數據類型

      • 面向對象部分講解
  • C:基本數據類型分類(4類8種)

    • 整數型

      • byte 佔一個字節 -128到127(8個比特位表明一個字節,也就是8個開關的排列組合組成;範圍要背下來,面試可能要問:好記,根據字節去記)
      • short 佔兩個字節 -2^15~2^15-1
      • int 佔四個字節 -2^31~2^31-1
      • long 佔八個字節 -2^63~2^63-1
    • 浮點型(小數型)

      • float 佔四個字節 -3.403E38~3.403E38 單精度
      • double 佔八個字節-1.798E308~1.798E308 雙精度
    • 字符型

      • char 佔兩個字節 0~65535(沒有負數) 表示字符
    • 布爾型

      • boolean

        • boolean理論上是佔八分之一個字節,由於一個開關就能夠決定是true和false了,可是java中boolean類型沒有明確指定他的大小
        • (面試題 問:布爾類型在內存中佔多大的取值範圍啊?坑,沒有指定:回到上面的總結便可)
        • (不能與其它類型進行運算的,但在C語言中能夠運算:0表明false,非0表明true)

11_(定義不一樣數據類型的變量)*

  • A:案例演示(~DataType)

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

12_(使用變量的注意事項)*

  • A:案例演示

    • a:做用域問題

      • 同一個區域不能使用相同的變量名
    • b:初始化值問題

      • 局部變量在使用以前必須賦值
      • 局部變量:聲明在方法上或者方法中的變量
    • c:一條語句能夠定義幾個變量

      • int a,b,c...;

13_(數據類型轉換之隱式轉換:DataTypeConversion)*

  • A:案例演示

    • a:int + int
    • b:byte + int
  • B:Java中的默認轉換規則

    • 取值範圍小的數據類型與取值範圍大的數據類型進行運算,會先將小的數據類型提高爲大的,再運算:這就被稱之爲隱式轉換
  • C:畫圖解釋byte+int類型的問題

14_(數據類型轉換之強制轉換)*

  • A:強制轉換問題

    • int a = 10;
    • byte b = 20;
    • b = a + b;
  • B:強制轉換的格式

    • b = (byte)(a + b); (不加byte強轉會報錯:Java中報can not convert from int to byte; 若是用dos命令運行報錯:可能損失精度)
  • C:強制轉換的注意事項

    • 若是超出了被賦值的數據類型的取值範圍獲得的結果會與你指望的結果不一樣(例如:126 + 4 / 300)

15_(面試題之變量相加和常量相加的區別)*

  • A:案例演示

    • 面試題:看下面的程序是否有問題,若是有問題,請指出並說明理由。
    • byte b1 = 3;
    • byte b2 = 4;
    • byte b3 = b1 + b2;

      • 從兩方面去回答這個題
      • byte與byte(或short或char)類型的變量在進行運算的時候,會自動類型提高爲int類型
      • b1和b2是兩個變量,變量存儲的值是變化的,在編譯的時候,沒法判斷裏面具體的值,相加有可能超過byte的取值範圍.
    • byte b4 = 3 + 4;

      • 3和4都是常量,java編譯器有常量優化機制,就是在編譯的的時候直接判斷結果,若是在取值範圍內就直接把3和4的結果賦值給b4了

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

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

    • byte,short,char -- int -- long -- float -- double
    • long: 8個字節
    • float:4個字節
    • 4個字節是32個二進制位
    • 1位是符號位
    • 8位是指數位(指數指表明多少次冪)
    • 00000000 11111111
    • 0到255
IEEE754(規定)
* 0表明0
* 255表明無窮大
* 1到254(指數:規定每一個指數要減去127後以下)
* -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

17_(字符和字符串參與運算)*

  • A:案例演示

    • System.out.println('a');
    • System.out.println('a'+1);
    • 經過看結果知道'a'的值是多少,由此引出ASCII碼錶
  • B:ASCII碼錶的概述(ASCII = American Standard Code for Information Interchange)

    • 記住三個值:

      • '0' 48
      • 'A' 65
      • 'a' 97
  • C:案例演示

    • System.out.println("hello"+'a'+1);//
    • System.out.println('a'+1+"hello");(從左向右順序) //
    • 任何數據類型用+與字符串相鏈接都會產生新的字符串
  • D:+在有字符串參與中被稱爲字符串鏈接符

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

18_(char數據類型)*

  • A:char c = 97; char的取值範圍:0到65535 編譯器判斷其在範圍內就會賦值成功
  • B:Java語言中的字符char能夠存儲一箇中文漢字嗎?爲何呢?

    • 能夠。由於Java語言採用的是Unicode碼來編碼的。Unicode(萬國碼 utf-8)碼中的每一個字符佔用兩個字節。中文也是佔的兩個字節
    • 因此,Java中的字符能夠存儲一箇中文漢字

19_(算術運算符的基本用法)*

  • A:什麼是運算符(operator)

    • 就是對常量和變量進行操做的符號。
  • B:運算符的分類

    • 算術運算符,賦值運算符,比較(關係或條件)運算符,邏輯運算符,位運算符,三目(元)運算符
  • C:算數運算符有哪些

    • +,-,*,/,%,++,--
  • D:注意事項:

    • a:+號在java中有三種做用,表明正號,作加法運算,字符串的鏈接符
    • b:整數相除只能獲得整數。若是想獲得小數,必須把其中一個數據變化爲浮點數類型,另外一個數自動類型提高
      System.out.println(10/3);
      System.out.println(10/3.0);
    • c:/獲取的是除法操做的商,%獲取的是除法操做的餘數
    • %運算符

      • 當左邊的絕對值小於右邊絕對值時,結果是左邊
      • 當左邊的絕對值等於右邊或是右邊的倍數時,結果是0
      • 當左邊的絕對值大於右邊絕對值時,結果是餘數
      • %運算符結果的符號只和左邊有關係,與右邊無關
      • 任何一個正整數%2結果不是0就是1能夠用來看成切換條件

20_(算術運算符++和--的用法)*

  • A:++,--運算符的做用

    • 自加(++)自減(--)運算
    • ++:自加。對原有的數據進行+1
    • --:自減。對原有的數據進行-1
  • B:案例演示

    • a:單獨使用:

      • 放在操做數的前面和後面效果同樣。(這種用法是咱們比較常見的)
    • b:參與運算使用:

      • 放在操做數的後面,先取值參與運算,再自增或者自減。
      • 放在操做數的前面,先自增或者自減,而後再將結果參與運算。
int a = 3;
    int b;
    b = a++;
    //b = ++a;

21_(算術運算符++和--的練習)*

  • A:案例演示

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

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

      int x = 4;
      int y = (x++)+(++x)+(x*10);

      若a、b爲int型變量,而且已分別賦值爲5和10,則表達式(a++)+(++b)+a*b+a++的值爲_____。

  • C:面試題

    • byte b = 10;
    • b++;
    • b = b + 1;
    • 問哪句會報錯,爲何

22_(賦值運算符的基本用法)*

  • A:賦值運算符有哪些

    • a:基本的賦值運算符:=
    • int a = 3; 把3賦值給a
    • 3 = a;不能給常量賦值.
      • 把=右邊的數據賦值給左邊。
    • b:擴展的賦值運算符:+=,-=,*=,/=,%=

      • += 把左邊和右邊作加法,而後賦值給左邊。
      • a += 4; // a = a + 4;

23_(賦值運算符的面試題)*

  • A:案例演示

    • 面試題:看下面的程序是否有問題,若是有問題,請指出並說明理由。
    • short s=1;
    • s = s+1;
    • short s=1;
    • s+=1;

24_(關係運算符的基本用法及其注意事項)*

  • A:關係運算符有哪些(比較運算符,條件運算符)

    • ==,!=,>,>=,<,<=
  • 注意事項:

    • 不管你的操做是簡單仍是複雜,結果是boolean類型。
    • "=="不能寫成"="。
相關文章
相關標籤/搜索