java语言编程基础_Java编程基础02——Java语言基础
1_(常量的概述和使用)*
A:什么是常量(constant)
在程序執行的過程中其值不可以發生改變
B:Java中常量的分類
字面值常量
自定義常量(面向對象部分講)
C:字面值常量的分類
字符串常量 用雙引號括起來的內容
整數常量 所有整數
小數常量 所有小數
字符常量 用單引號括起來的內容,里面只能放單個數字,單個字母或單個符號
布爾常量 較為特殊,只有true和false
空常量 null(數組部分講解)
D:案例演示
用輸出語句輸出各種常量。null不演示
2_(進制概述和二,八,十六進制圖解)(了解)
A:什么是進制(scale)
進制:就是進位制,是人們規定的一種進位方法。 對于任何一種進制--X進制,就表示某一位置上的數運算時是逢X進一位。二進制就是逢二進一,八進制是逢八進一,十進制是逢十進一,十六進制是逢十六進一。
例如一周有七天,七進制,一年有十二個月,十二進制
星星和月亮的進制,月亮和太陽的進制(4進制)
B:十進制的由來
十進制的由來是因為人類有十個手指(獵物的分配:十個一捆)
C:二進制的由來
其實二進制來源與中國,請看史料記載
18世紀德國數理哲學大師萊布尼茲從他的傳教士朋友鮑威特寄給他的拉丁文譯本《易經》中,讀到了八卦的組成結構,驚奇地發現其基本素數(0)(1),即《易經》的陰爻yao- -和__陽爻,其進位制就是二進制,并認為這是世界上數學進制中最先進的。20世紀被稱作第三次科技革命的重要標志之一的計算機的發明與應用,其運算模式正是二進制。它不但證明了萊布尼茲的原理是正確的,同時也證明了《易經》數理學是很了不起的。
D:八進制的由來
任何數據在計算機中都是以二進制的形式存在的。二進制早期由電信號開關演變而來。一個整數在內存中一樣也是二進制的,但是使用一大串的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類型。
"=="不能寫成"="。
總結
以上是生活随笔為你收集整理的java语言编程基础_Java编程基础02——Java语言基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 去旅游景点买房子能升值吗?
- 下一篇: 非活动账户是什么意思