標籤:java面試題 關鍵字 標示符 資料類型 進位轉換
------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------
1:關鍵字(掌握)
(1)被Java語言賦予特定含義的單詞
(2)特點:
全部小寫。如:class、static等
(3)注意事項:
A:goto和const作為保留字存在。
B:類似於Notepad++這樣的進階記事本會對關鍵字有特殊顏色標記
2:標識符(掌握)
(1)就是給類,介面,方法,變數等起名字的字元序列,要求見名知意。
(2)組成規則:
A:英文大小寫字母
B:數字
C:$和_
(3)注意事項:
A:不能以數字開頭
B:不能是java中的關鍵字
C:區分大小寫
(4)常見的命名規則(見名知意)
A:包 全部小寫
單級包:小寫
舉例:itheima.com
多級包:小寫,並用.隔開
舉例:cn.itcast,com.baidu
B:類或者介面
一個單詞:首字母大寫
舉例:Student,Demo
多個單詞:每個單字首大寫
舉例:HelloWorld,StudentName
C:方法或者變數
一個單詞:首字母小寫
舉例:name,main
多個單詞:從第二個單詞開始,每個單字首大寫
舉例:studentAge,showAllNames()
D:常量
全部大寫
一個單詞:大寫
舉例:PI
多個單詞:大寫,並用_隔開
舉例:STUDENT_MAX_AGE
3:注釋(掌握)
(1)就是對程式進行解釋說明的文字
(2)分類:
A:單行注釋 //
B:多行注釋 /**/
C:文檔注釋(後面講) /** */
(3)把HelloWorld案例寫了一個帶注釋的版本。
後面我們要寫一個程式的過程。
需求:
分析:
實現:
代碼體現:
(4)注釋的作用
A:解釋說明程式,提高了代碼的閱讀性。
B:可以協助我們偵錯工具。
後面我們會講解一個更高端的一個調試工具
4:常量(掌握)
(1)在程式執行的過程中,其值不發生改變的量
(2)分類:
A:字面值常量
B:自訂常量(後面講)
(3)字面值常量
A:字串常量 "hello"
B:整數常量 12,23
C:小數常量 12.345
D:字元常量 ‘a‘,‘A‘,‘0‘
E:布爾常量 true,false
F:空常量 null(後面講)
(4)在Java中針對整數常量提供了四種表現形式
A:二進位 由0,1組成。以0b開頭。
B:八進位 由0,1,...7組成。以0開頭。
C:十進位 由0,1,...9組成。整數預設是十進位。
D:十六進位 由0,1,...9,a,b,c,d,e,f(大小寫均可)組成。以0x開頭。
5:進位轉換(瞭解)
(1)其他進位到十進位
係數:就是每一個位上的數值
基數:x進位的基數就是x
權:對每一個位上的資料,從右且從0開始編號,對應的編號就是該資料的權。
結果:係數*基數^權次冪之和。
例題:
二進位轉十進位:0b10101=1*2^4+0*2^3+1*2^2+0+1*2^0=16+4+1=21
八進位轉十進位:0123=3*8^0+2*8^1+1*8^2=83.
(2)十進位到其他進位
除基取餘,直到商為0,餘數反轉:
十進位轉二進位就除2,轉8進位就除8取餘,轉十六就除16直到商為零。
例:20轉換成二進位:10100
20/2=10 0
10/2=5 0
5/2=2 1
2/2=1 0
1/2=0 1
(3)進位轉換的快速轉換法
A:十進位和二進位間的轉換
8421碼。
B:二進位到八進位,十六進位的轉換:
第一種方法:用十進位作為橋樑。
第二種方法:拆分組合,二到八,3位組合;二到十六4位組合。
6:變數(掌握)
(1)在程式的執行過程中,其值在某個範圍內可以發生改變的量
A:必須對其進行限定。用資料類型來限定。
B:運算時不能直接拿空間去運算,真正運算時使用的是該空間中的值,我們就給這個空間起個代表名(變數名)
C:即使有資料類型了,有變數名了,但是這個空間是空的,沒有任何意義,需要對其賦值。(初始化值)
(2)變數的定義格式:
A:資料類型 變數名 = 初始化值;
B:資料類型 變數名;
變數名 = 初始化值;
(3)使用變數的時候要注意的問題
A:範圍:
變數定義在那個大括弧中,它就在這個大括弧內有效,並且,在同一個大括弧內不能同時定義同名的變數。
B:初始化值
沒有初始化值的變數不能直接使用,推薦定義變數的時候就給變數賦值
C:在同一行上建議只定義一個變數。
7:資料類型(掌握)
(1)Java是一種強型別語言,針對每種資料都提供了對應的資料類型。
(2)分類:
A:基礎資料型別 (Elementary Data Type):4類8種
B:引用資料類型:類,介面,數組。
(3)基礎資料型別 (Elementary Data Type)
A:整數 佔用位元組數 範圍
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
B:浮點數
float 4-3.403E38--3.403E38
double 8 -1.798E308--1.798E308
C:字元
char 2
D:布爾
boolean 1
注意:
整數預設是int類型,浮點數預設是double。
長整數要加L或者l,建議用L。long j=100000000L
單精確度的浮點數要加F或者f,建議用F。float h=12.345F
8:資料類型轉換(掌握)
(1)boolean類型不參與轉換
(2)預設轉換
A:從小到大
B:byte,short,char -- int -- long -- float -- double
C:byte,short,char之間不相互轉換,直接轉成int類型參與運算。
(3)強制轉換
A:從大到小
B:可能會有精度的損失,一般不建議這樣使用。
C:格式:
目標資料類型 變數名 = (目標資料類型) (被轉換的資料);
例:byte a=3; int b=4; int c=a+b (預設轉換)
byte c=(byte)(a+b)強制轉換
9:思考題和面試題:
(1)下面兩種方式有區別嗎?
float f1 = 12.345f;
float f2 = (float)12.345;
答:f1其實是通過一個double類型轉換過來的。
而f2本身就是一個float類型。通常會使用第二種方法。
(2)下面的程式有問題嗎,如果有,在哪裡呢?
byte b1 = 3, b2 = 4 ,b;
b = b1 + b2;
b = 3 + 4;
答:b=b1+b2有問題,因為變數相加,會首先看類型,最後把結果賦值時也會看類型。上面b1+b2的結果是int類型。所以會出錯
而b = 3 + 4是常量相加,首先會做加法,然後看結果是否在賦值的資料類型範圍內,如果不是,就會報錯。
(3)下面的操作結果是什麼呢?
byte b = (byte)130;
答;因為byte的範圍是-128到127.而130不在這個範圍內,所以會報錯。我們可以使用強制類型轉換。byte b=(byte)130;
結果是多少呢?
分析過程:我們要想知道結果是什麼,就應該知道是如何進行計算的。而電腦中的資料的運算都是補碼進行的。要得到補碼,就要首先計算出資料的二進位。
A:擷取130這個資料的二進位
00000000 00000000 00000000 100000010
這是130的原碼,因為是正數,所以也是它的反碼,補碼。
B:因為byte只有一個位元組,所以需要截取。
100000010
這個結果是截取成byte後的補碼。
C:已知補碼,要求原碼
符號位 數值位
補碼 1 0000010
反碼 1 0000001(向上借位減1)
原碼 1 1111110
通過原碼將二進位轉換成十進位就是126,又因為首位是1,所以是-126.
(4)字元參與運算
字元與整數相加結果是整數
是尋找ASCII裡面的值
‘a‘ 97
‘A‘ 65
‘0‘ 48
System.out.println(‘a‘);//a
System.out.println(‘a‘ + 1);//97+1=98
(5)字串參與運算
字串資料和其他資料做+,結果是字串類型,這裡的+其實是字串的串連符。
System.out.println("hello"+‘a‘+1);//helloa1
System.out.println(‘a‘+1+"hello");//98hello
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5
二:資料類型中的補充知識點
1:在定義Long或者Float類型變數的時候,要加L或者f。
整數預設是int類型,浮點數預設是double。
byte,short在定義的時候,他們接收的其實是一個int類型的值。
這個是自己做了一個資料檢測的,如果不再它們的範圍內,就報錯。
2:byte值的問題
byte b1 = 127;
byte b2 = (byte)128; //-128 128-(-128)=256
byte b3 = (byte)129; //-127 129-(-127)=256
byte b4 = (byte)130; //-126 130-(-126)=256
byte .....(byte)256; //0 256-0=256
byte .....(byte)300; //44 300-44=256
相當於用強轉的資料-256;
byte的範圍:-128 ~ 127
128:10000000
-128:10000000 (這裡的1即是符號位,也是數值位)
3:資料類型轉換之預設轉換
byte,short,char -- int -- long -- float -- double
long: 8個位元組
float:4個位元組
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
4:Java語言中的字元char可以儲存一個中文漢字嗎?為什麼呢?
可以。因為java語言中的字元佔用兩個位元組。
Java語言採用的是Unicode編碼。
------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------
黑馬程式員----java基礎之關鍵字、標示符、變數、資料類型、附相關面試題