1. 程式人生 > >關鍵字,識別符號,註釋,常量,進位制轉換,變數

關鍵字,識別符號,註釋,常量,進位制轉換,變數

關鍵字

被Java語言賦予特定含義的單詞。
特點:
組成關鍵字的字母全部小寫。
注意事項:
A:goto和const作為保留字存在,目前並不使用。注意:保留字在jdk的新版本中可能會提升為關鍵字。
B:類似於Notepad++這樣的高階記事本會對關鍵字有特殊顏色標記。

例項程式碼

/*
關鍵字:被java語言賦予特定含義的單詞。
特點:組成關鍵字單詞的字母全部小寫。
注意:
A:goto和const是保留字,目前並不使用。注意:保留字在jdk的新版本中可能會提升為關鍵字。
B:類似於UE、Notepad++這樣的高階記事本,針對關鍵字都有特殊的顏色標記。
 */
class KeyWordDemo {
     public static void main(String[] args) {
     System.out.println("HelloWorld");
    }
}

java中用到的關鍵字如下圖所示:(50個左右)

識別符號

(1)就是給類、介面、方法、變數等起名字的字元序列。
(2)組成規則:
A:可由英文大小寫字母組成;
B:可由數字組成;
C:可由$和_組成;
D:可由中文組成,但是不建議用中文!
(3)注意事項:
A:不能以數字開頭;
B:不能是java中的關鍵字;
C:java語言嚴格區分大小寫。
(4)開發的常見的命名規則(見名知意)
A:包的命名(全部小寫),其實就是資料夾,用於把相同的類名進行區分。
單級包:小寫。
舉例:liuyi	  com
多級包:小寫,用.隔開。
舉例:cn.itcast	  com.baidu  (習慣是域名反寫)
B:類或者介面的命名
一個單詞:單詞的首字母大寫。
舉例:Student,Demo
多個單詞:每個單詞首字母大寫。
舉例:HelloWorld,StudentName
C:方法或者變數的命名
一個單詞:單詞的首字母小寫。
舉例:name,main
多個單詞:從第二個單詞開始,每個單詞首字母大寫。
舉例:studentAge,showAllNames()
D:常量的命名
全部大寫
一個單詞:大寫
  舉例:PI
多個單詞:大寫,並用_隔開。
  舉例:STUDENT_MAX_AGE

註釋

就是對程式進行解釋說明的文字,不會被JVM解釋執行

分類:
A:單行註釋://註釋文字	        單行註釋可以巢狀使用。
B:多行註釋:/*註釋文字*/	       多行註釋不可以巢狀使用。
C:文件註釋(後面講):/**註釋文字.*/	  被javadoc工具解析生成一個說明書,面向物件部分講解

把HelloWorld案例寫了一個帶註釋的版本。
後面我們要寫一個程式的過程。
需求:寫一個程式,在控制檯輸出HelloWorld。
分析: 1:寫一個java程式,首先定義類。
    2:程式要想能夠被jvm呼叫,必須定義main方法。
    3:程式要想有輸出結果,必須用輸出語句

實現: 1:定義類用的是class關鍵字,後面跟的是類名。
    2:main方法的基本格式。
    3:輸出語句的基本格式。

註釋的作用:
A:解釋說明程式,提高了程式碼的閱讀性。
B:可以幫助我們除錯程式。
後面我們會講解一個更高階的一個除錯工具 

常量

 

常量:
在程式執行過程中,其值不發生改變的量。

分類:
A:字面值常量
B:自定義常量(後面講)
字面值常量
A:字串常量用雙引號括起來的內容。
舉例:“hel1o\",\"world\",\"Hellolorld\"
B:整數常量所有的整數。
舉例:100,200
C:小數常量所有的小數。
舉例:10.23,110.11
D:字元常量用單引號括起來的內容
舉例:‘a',A',0'
錯誤的:‘ab' ''空也會報錯
E:布林常量比較特殊。
舉例:true,false
F:空常量後面會講到。
舉例:nul1

注意:空常量null不可以直接用於列印輸出

在Java中針對整數常量提供了四種表現形式

二進位制	由0,1組成。以0b開頭。
八進位制	由0,1,...,7組成。以0開頭。
十進位制	由0,1,...,9組成。整數預設是十進位制。
十六進位制	由0,1,...,9,a,b,c,d,e,f(大小寫均可)組成。以0x開頭。

進位制轉換


其他進位制轉換到十進位制
係數:就是每一個位上的數值。
基數:x進位制的基數就是x。
權:對每一個位上的資料,從右往左,並且從0開始編號,對應的編號就是該資料的權。
結果:係數*基數^權次冪之和。


十進位制轉換到其他進位制
方法:除基取餘,直到商為0,餘數反轉。
如下圖所示:


進位制轉換的快速轉換法
A:十進位制和二進位制間的轉換
8421碼。8421碼是BCD程式碼中最常用的一種。
B:二進位制到八進位制,十六進位制的轉換
如下圖所示:

原碼、反碼、補碼


8421碼:
    8421碼是中國大陸的叫法,8421碼是BCD程式碼中最常用的一種。
    在這種編碼方式中每一位二值程式碼的1都是代表一個固定數值,把每一位的1代表的十進位制數加起來,得到的結果就是它所代表的十進位制數碼。
    例如:    1   1   1   1    1    1    1   1
        128   64   32   16    8     4    2     1

變數

在程式的執行過程中,其值在某個範圍內可以發生改變的量

變數的定義格式:
A:資料型別 變數名 = 初始化值;
B:資料型別 變數名;
變數名 = 初始化值;

從本質上講,變數其實是記憶體中的一小塊區域,使用變數名來訪問這塊區域;
因此,每一個變數使用前必須要先申請(宣告),然後必須進行賦值(填充內容),才能使用

為什麼要定義變數呢?
答:用來不斷的存放同一型別的常量,並可以重複使用

如下圖所示:

使用變數的時候要注意的問題

A:作用域
變數定義在哪一級大括號中,那個大括號的範圍就是這個變數的作用域。
相同的作用域中不能定義兩個同名變數。
B:初始化值
沒有初始化值的變數不能直接使用。
你只要在使用前給值就行,不一定非要在定義的時候就立即給值。
推薦建議:在定義的時候就給初值比較好。
C:在一行上建議只定義一個變數。
其實也可以定義多個變數,但是不建議,不好看。

資料型別

Java語言是一種強型別語言,針對每種資料都提供了對應的資料型別。

資料型別的分類:

A:基本資料型別:4類8種。
B:引用資料型別:類、介面、陣列、字串、Lambda。   

注意:字串、Lambda這兩種引用資料型別後面會學習到。
       Lambda:希臘字母表中排序第十一位的字母。
       大寫Λ用於:粒子物理學上,Λ重子的符號。
       小寫λ用於:物理上的波長符號、放射學的衰變常數、線性代數中的特徵值。西裡爾字母的 Л 是由 Lambda 演變而成。

基本資料型別

 
A:整數型別	      佔用位元組數(Byte)  	預設是有符號的,資料範圍是:	
      byte	     1	        	-2^8 ~ 2^15-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    -3.4.3*10^38 ~ 3.4.3*10^38
      double    8	        	-1.798e308 ~ 1.798e308   -1.798*10^308 ~ 1.798*10^308
    
C:字元型別
      char	    	2
    
D:布林型別
      boolean	 1

注意的地方

a:整數預設是int型別,小數預設是double

b:宣告長整數要加L或者l
例如:int i1 = 600; //正確。 long l1 = 88888888888L; //必須加L或l否則會出錯。一般用大寫的L,因為小寫的l像1。

c:宣告單精度的浮點數要加F或者f
例如:double d = 12345.6; //正確。 float f = 12.3f; //必須加f或F否則會出錯。損失精度

d:char型別資料用來表示通常意義上的“字元”,字元常量為用單引號括起來的單個字元。
例如:char ch1= 'a'; char ch2='中';

e:Java字符采用 Unicode 編碼,每個字元佔兩個位元組,因而可用十六進位制編碼形式表示。注:Unicode是全球語言統一編碼

f:boolean型別適於邏輯運算,一般用於程式流程控制。
boolean型別資料只允許取值 true 或 false ,不可以 0 或非 0 的整數替代 true 和 false ,這點和C語言不同
    
g:與整數型別類似,Java浮點型別有固定的表數範圍和欄位長度,不受平臺影響。
 Java浮點型別常量有兩種表示形式:
 十進位制數形式, 如: 3.14   314.0
 科學記數法形式,如:3.14e2	  	3.14*10^2
    
h:Java各整數型別有固定的表數範圍和欄位長度,其不受具體作業系統的影響,以保證Java程式的可移植性。
    
i:所謂的有效數字:具體地說,是指在分析工作中實際能夠測量到的數字。所謂能夠測量到指的是包括最後一位估計的不確定的數字。
例如:對於一個近似數,從左邊第一個不是0的數字起,到精確到的位數止,所有的數字都叫做這個數的有效數字。

資料型別轉換

一般來說,我們在運算的時候,要求參與運算的資料型別必須一致。

boolean型別不能轉換為其他的資料型別。

預設轉換(從小到大):
A:byte,short,char --> int --> long -- float -- double。
B:byte,short,char相互之間不轉換,他們參與運算時首先預設轉換為int型別。

如下圖所示:

強制轉換(從大到小):
A:可能會有精度的損失,一般不建議這樣使用。
B:格式:
目標資料型別 變數名 = (目標資料型別)(被轉換的資料);
C:注意:不要隨意的去使用強制轉換,因為它隱含了精度損失的問題

自動型別轉換

 

 

思考題和麵試題:
思考題:請問下面這個有沒有問題?
double d = 12.345;
float f = d;
答:有問題,可能損失精度。

A:下面兩種方式有區別嗎?
float f1 = (float)12.345;
float f2 = 12.345f;
答:f1其實是通過一個double型別轉換過來的。
而f2本身就是一個float型別。
B:下面的程式有問題嗎,如果有,在哪裡呢?
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;	  //資料型別提升了,有問題,可能會損失精度。
byte b4 = 3 + 4;	     //沒問題。常量,是先把結果計算出來,然後看是否在byte的範圍內,如果在就不報錯!
C:下面的操作結果是什麼呢?
byte b = (byte)130;	  //-126
我們要想知道結果是什麼,就應該知道是如何進行計算的。
而我們又知道計算機中資料的運算都是補碼進行的。
而要得到補碼,首先要計算出資料的二進位制。

a:獲取130這個資料的二進位制。首先130預設是有符號的int型別。
00000000 00000000 00000000 10000010
這是130的原碼,也是反碼,還是補碼。
即在計算機內部儲存的是補碼:
00000000 00000000 00000000 10000010
b:做擷取操作,截成byte型別的了。
10000010 
這個結果是補碼。
注意:電腦顯示螢幕顯示的是原碼,且為十進位制。
c:即已知補碼求原碼。
    符號位	    	  數值位
補碼:	  1         0000010
反碼:	  1	        0000001
原碼:	  1	        1111110
即得到輸出是-126
D:字元參與運算
是查詢ASCII裡面的值
'a' --> 97
'A' --> 65
'0' --> 48
System.out.println('a');   //97
System.out.println('a' + 1);  //98
E:字串參與運算
首先運算是從左到右的。
字串資料+其他資料做,結果是字串型別。因為這裡的+不是加法運算,而是是字串的連線符(拼接符)。
其他資料+其他資料+字串資料,先計算其他的值後再與字串進行拼接。
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