Java語言基礎1
常量的概述和使用
- A:什麼是常量
- 在程序執行的過程中其值不可以發生改變
- B:Java中常量的分類
- 字面值常量
- 自定義常量
C:字面值常量的分類
- 字符串常量 用雙引號括起來的內容
- 整數常量 所有整數1,2,33
- 小數常量 所有小數2.222,3.99
- 字符常量 用單引號括起來的內容,裏面只能放單個數字,單個字母或單個符號 ‘d’
- 布爾常量 較爲特殊,只有true和false
- 空常量 null(數組部分講解)
D:案例演示
- 用輸出語句輸出各種常量。null不演示
進制概述和二,八,十六進制
1 byte=8 bit
1 GB=1024*1024*1024 byte
知識點:平常用的硬盤爲什麼是總是達不到號稱的大小
因爲廠商算法是1G=1000*1000*1000 byte
- A:什麼是進制
- 進制:就是進位制,是人們規定的一種進位方法。 對於任何一種進制–X進制,就表示某一位置上的數運算時是逢X進一位。二進制就是逢二進一,八進制是逢八進一,十進制是逢十進一,十六進制是逢十六進一。
- 例如一週有七天,七進制,一年有十二個月,十二進制
- B:十進制的由來
- 十進制的由來是因爲人類有十個手指
- C:二進制的由來
- 其實二進制來源與中國,請看史料記載
- 18世紀德國數理哲學大師萊布尼茲從他的傳教士朋友鮑威特寄給他的拉丁文譯本《易經》中,讀到了八卦的組成結構,驚奇地發現其基本素數(0)(1),即《易經》的陰爻yao- -和__陽爻,其進位制就是二進制,並認爲這是世界上數學進制中最先進的。20世紀被稱作第三次科技革命的重要標誌之一的計算機的發明與應用,其運算模式正是二進制。它不但證明了萊布尼茲的原理是正確的,同時也證明了《易經》數理學是很了不起的。
- D:八進制的由來
- 任何數據在計算機中都是以二進制的形式存在的。二進制早期由電信號開關演變而來。一個整數在內存中一樣也是二進制的,但是使用一大串的1或者0組成的數值進行使用很麻煩。
- 所以就想把一大串縮短點,將二進制中的三位用一位表示。這三位可以取到的最大值就是7.超過7就進位了,這就是八進制。
- E:十六進制的由來
- 但是對於過長的二進制變成八進制還是較長,所以出現的用4個二進制位表示一位的情況,四個二進制位最大是15,這就是十六進制。
- F:不同進製表現同一個數據的形式特點
- 進制越大,表現形式越短
- 進制越大,表現形式越短
不同進制數據的表現形式
- 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 2 2的2次方
- 0100 8 8的2次方
- 100 10 10的2次方
- 0x100 16 16的2次方
原碼反碼補碼
- A:爲什麼要學習原碼反碼補碼?
- 後面要學習強制類型轉換,如果不知道有原反補會看不懂結果
- B:有符號數據表示法的幾種方式
- 原碼
- 就是二進制定點表示法,即最高位爲符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。
- 通過一個字節,也就是8個二進制位表示+7和-7
- 0(符號位) 0000111
- 1(符號位) 0000111
- 反碼
- 正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
- 補碼
- 正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
- 原碼
變量的概述及格式
- A:什麼是變量
- 在程序執行的過程中,在某個範圍內其值可以發生改變的量
- B:變量的定義格式
- 數據類型 變量名 = 變量值;
- C:爲什麼要定義變量
- 用來不斷的存放同一類型的常量,並可以重複使用
數據類型的概述和分類
- A:爲什麼有數據類型
- Java語言是強類型語言,對於每一種數據都定義了明確的具體數據類型,在內存中分配了不同大小的內存空間(你本來應該多大,我就給你分多大的空間)
B:Java中數據類型的分類
- 基本數據類型
- 引用數據類型
C:基本數據類型分類(4類8種)
- 整數型
- byte 佔一個字節(8b等於1個字節) -128到127
- 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類型沒有明確指定他的大小
- boolean
- 整數型
定義不同數據類型的變量
- A:案例演示
- 定義不同基本數據類型的變量,並輸出
- 賦值時候注意float類型,long類型
使用變量的注意事項
- A:案例演示
- a:作用域問題
- 同一個區域不能使用相同的變量名
- b:初始化值問題
- 局部變量在使用之前必須賦值
- c:一條語句可以定義幾個變量
- int a,b,c…;
- a:作用域問題
數據類型轉換之隱式轉換
- A:案例演示
- a:int + int
- b:byte + int
- B:Java中的默認轉換規則
- 取值範圍小的數據類型與取值範圍大的數據類型進行運算,會先將小的數據類型提升爲大的,再運算
-
int x = 3; - byte b = 4;
- x = x + b;使用int接收的
數據類型轉換之強制轉換
- A:強制轉換問題
- int x = 3;
- byte b = 4;
- b = a + b;
- B:強制轉換的格式
- b = (byte)(a + b);
- C:強制轉換的注意事項
- 如果超出了被賦值的數據類型的取值範圍得到的結果會與你期望的結果不同 ,會損失精度
- 比如byte a=(byte)132
- Sys a,指揮按byte顯示,並原碼補碼反碼轉換
面試題之變量相加和常量相加的區別
A:案例演示
- 面試題:看下面的程序是否有問題,如果有問題,請指出並說明理由。
- byte b1 = 3;
- byte b2 = 4;
byte b3 = b1 + b2;
- 從兩方面去回答這個題
- b1和b2是兩個變量,變量裏面存儲的值都是變化的,所以在程序運行中JVM是無法判斷裏面具體的值是否會超出byte取值範圍
- byte類型的變量在進行運算的時候,會自動類型提升爲int類型,強轉損失精度
- byte b4 = 3 + 4;
- 3和4都是常量,java有常量優化機制,就是在編譯的的時候直接把3和4的結果賦值給b4了
- 3和4都是常量,java有常量優化機制,就是在編譯的的時候直接把3和4的結果賦值給b4了
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
- 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
字符和字符串參與運算
A:案例演示
- System.out.println(‘a’);
System.out.println(‘a’+1);
通過看結果知道’a’的值是多少,由此引出ASCII碼錶
- B:ASCII碼錶的概述
- 記住三個值:
- ’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”);
char數據類型
- A:char c = 97; 0到65535
- B:Java語言中的字符char可以存儲一箇中文漢字嗎?爲什麼呢?
- 可以。因爲Java語言採用的是Unicode編碼。Unicode編碼中的每個字符佔用兩個字節。中文也是佔的兩個字節
- 所以,Java中的字符可以存儲一箇中文漢字
算術運算符的基本用法
- A:什麼是運算符
- 就是對常量和變量進行操作的符號。
- B:運算符的分類
- 算術運算符,賦值運算符,比較(關係或條件)運算符,邏輯運算符,位運算符,三目(元)運算符
- C:算數運算符有哪些
- +,-,*,/,%,++,–
- D:注意事項:
- a:+號在java中有三種作用,代表正號,做加法運算,字符串的連接符
- b:整數相除只能得到整數。如果想得到小數,必須把數據變化爲浮點數類型
- c:/獲取的是除法操作的商,%獲取的是除法操作的餘數
- %運算符
- 當左邊的絕對值小於右邊絕對值時,結果是左邊
- 當左邊的絕對值等於右邊或是右邊的倍數時,結果是0
- 當左邊的絕對值大於右邊絕對值時,結果是餘數
- %運算符結果的符號只和左邊有關係,與右邊無關
- 任何一個正整數%2結果不是0就是1可以用來當作切換條件
算術運算符++和–的用法
- A:++,–運算符的作用
- 自加(++)自減(–)運算
- ++:自加。對原有的數據進行+1
- –:自減。對原有的數據進行-1
- B:案例演示
- a:單獨使用:
- 放在操作數的前面和後面效果一樣。(這種用法是我們比較常見的)
- b:參與運算使用:
- 放在操作數的前面,先自增或者自減,然後再參與運算。
- 放在操作數的後面,先參與運算,再自增或者自減。
簡稱:什麼在前,就先幹什麼,符號前,就先自己算,不在前,就先拿給比人用
- a:單獨使用:
算術運算符++和–的練習
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);
x=6
y=70
- C:面試題
- byte b = 10;
- b++;
- b = b + 1;
- 問哪句會報錯,爲什麼
- byte b = 10;
- b++;此步驟已經有一個強轉 b=(byte)b+1
- b = b + 1;右邊已經在加的時候自行提升爲int,需要加入手動加入強轉,否則報錯
賦值運算符的基本用法
A:賦值運算符有哪些
a:基本的賦值運算符:=
- 把=右邊的數據賦值給左邊。
b:擴展的賦值運算符:+=,-=,*=,/=,%=
- += 把左邊和右邊做加法,然後賦值給左邊。
a+=1也就是
a=a+1
- += 把左邊和右邊做加法,然後賦值給左邊。
賦值運算符的面試題
- A:案例演示
- 面試題:看下面的程序是否有問題,如果有問題,請指出並說明理由。
- short s=1;s = s+1;同上,需要加強轉
- short s=1;s+=1;底層要得到一個結果,所以會底層會自動解析爲s=(byte)s+1.和上面的b++很像。
關係運算符的基本用法及其注意事項
- A:關係運算符有哪些(比較運算符,條件運算符)
- ==,!=,>,>=,<,<=
注意事項:
無論你的操作是簡單還是複雜,結果是boolean類型。
“==”不能寫成”=”。
201611071826