02-java常量变量数据类型
1.java 編程基礎
1.1.程序注釋
注釋:就是對代碼的解釋和說明。其目的是讓人們能夠更加輕松地了解代碼。為代碼添加注 釋,是十分必須要的,它不影響程序的編譯和運行。 注釋的分類: 單行注釋:// 多行注釋:/* */
1.2.Java 中的關鍵字
關鍵字:是指在程序中,Java 已經定義好的單詞,具有特殊含義。 HelloWorld 案例中,出現的關鍵字有 public 、 class 、 static 、 void 等,這些單詞已經 被 Java 定義好,全部都是小寫字母,notepad++中顏色特殊。 關鍵字比較多,不能死記硬背,學到哪里記到哪里即可。
1.3.Java 標識符
1.3.1. 標識符
標識符:是指在程序中,我們自己定義內容。比如類的名字、方法的名字和變量的名字等等, 都是標識符 定義合法標識符規則:
A) 由 26 個英文字母大小寫,0-9 ,_或$ 組成
B) 數字不可以開頭。
C) 不可以使用關鍵字和保留字,但能包含關鍵字和保留字。
D)Java 中嚴格區分大小寫,長度無限制。
E) 標識符不能包含空格。
1.3.2. 命名規范
包名:多單詞組成時所有字母都小寫:xxxyyyzzz 類名、接口名:多單詞組成時,所有單詞的首字母大寫:XxxYyyZzz 變量名、方法名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字 母大寫:xxxYyyZzz常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ 注意 1:在起名字時,為了提高閱讀性,要盡量有意義,“見名知意”。 注意 2:java 采用 unicode 字符集,因此標識符也可以使用漢字聲明,但是不建議使用。
1.4.java 中的常量
1.4.1. 常量概念
常量:是指在 Java 程序中固定不變的數據。
1.4.2. 常量的類型
1.5.常量案例代碼
1.6.變量
1.6.1. 變量的概念:
內存中的一個存儲區域 該區域的數據可以在同一類型范圍內不斷變化 變量是程序中最基本的存儲單元。包含變量類型、變量名和存儲的值
1.6.2. 變量的作用:
用于在內存中保存數據
1.6.3. 使用變量注意:
A)Java 中每個變量必須先聲明,后使用 B) 使用變量名來訪問這塊區域的數據 C) 變量的作用域:其定義所在的一對{}內 D) 變量只有在其作用域內才有效 E) 同一個作用域內,不能定義重名的變量值
1.6.4. 聲明變量
語法:<數據類型><變量名稱> 例如:intvar;
1.6.5. 變量的賦值
語法:<變量名稱>= <值> 例如:var=10; 聲明和賦值變量 語法:<數據類型><變量名>= <初始化值> 例如:intvar=10;
1.6.6. 變量的分類-基本數據類型
對于每一種數據都定義了明確的具體數據類型(強類型語言),在內存中分配了不同大小的 內存空間
1.6.7. 變量的分類-按聲明的位置的不同
在方法體外,類體內聲明的變量稱為成員變量。 在方法體內部聲明的變量稱為局部變量
注意:二者在初始化值方面的異同: 同:都有生命周期異:局部變量除形參外,需顯式初始化。
1.7.計算機的存儲單元
1.7.1. 存儲單元
存儲單元是一種計量單位。指在某一領域以一個特定量,或標準做為一個記錄(計數)點。 再以此點的某個倍數再去定義另一個點,而這個點的代名詞就是計數單位或存儲單位。如卡 車的載重量是噸,也就是這輛卡車能存儲貨物的數量,噸就是它的單位量詞。
1.7.2. 計算機的存儲單位
在計算機中最小的信息單位是 bit,也就是一個二進制位,8 個 bit 組成一個 Byte,也就是 字節。一個存儲單元可以存儲一個字節,也就是 8 個二進制位。計算機的存儲器容量是以字 節為最小單位來計算的,對于一個有 128 個存儲單元的存儲器,可以說它的容量為 128 字節。 二進制序列用以表示計算機、電子信息數據容量的量綱,基本單位為字節 B,字節向上分別 為 KB、MB、GB、TB,每級為前一級的 1024 倍,比如 1KB=1024B,1M=1024KB。
位 bit (比特)(Binary Digits):存放一位二進制數,即 0 或 1,最小的存儲單位。[英 文縮寫:b(固定小寫)]
字節 byte:8 個二進制位為一個字節(B),最常用的單位。
1 Byte(B) = 8 bit
1 Kilo Byte(KB) = 1024B
1 Mega Byte(MB) = 1024 KB
1 Giga Byte (GB)= 1024 MB
1 Tera Byte(TB)= 1024 GB
1 Peta Byte(PB) = 1024 TB
1 Exa Byte(EB) = 1024 PB
1 Zetta Byte(ZB) = 1024 EB
1Yotta Byte(YB)= 1024 ZB
1 Bronto Byte(BB) = 1024 YB
1Nona Byte(NB)=1024 BB
1 Dogga Byte(DB)=1024 NB
1 Corydon Byte(CB)=1024DB
1 Xero Byte (XB)=1024CB
上面的換算相信大家已看過了,可說起存儲容量單位,大家很自然的會想起自己的硬盤 有多少 GB、內存有多少 MB,我們知道了字節(B)是電腦中表示信息含義的最小單位,通常情 況下一個 ACSII 碼就是一個字節的空間來存放。而事實上電腦中還有比字節更小的單位,因 為一個字節是由八個二進制位組成的,換一句話說,每個二進制位所占的空間才是電腦中最 小的單位,我們把它稱為位,也稱比特(bit)。由此可見,一個字節等于八位。人們之所 以把字節稱為電腦中表示信息含義的最小單位,是因為一位并不能表示我們現實生活中的一 個相對完整的信息。 有的時候,為了簡寫,我們會把位的單位縮寫成 b,這個時候大家一定會有疑問了,因 為字節的單位我們用 B 表示,兩者不就是一樣了嗎?其實,字節的表示單位 B 是 Byte 的縮寫, 位的表示單位 b 是 bit 的縮寫,1b 與 1B 之間只要大小寫不同,那么表示的含義也不同,因 為 8b 才等于 1B。
1.7.3. 進制
進制也就是進位計數制,是人為定義的帶進位的計數方法(有不帶進位的計數方法,比 如原始的結繩計數法,唱票時常用的“正”字計數法,以及類似的 tally mark 計數)。 對 于任何一種進制—X 進制,就表示每一位置上的數運算時都是逢 X 進一位。 十進制是逢十 進一,十六進制是逢十六進一,二進制就是逢二進一,以此類推,x 進制就是逢 x 進位。 對于任何一個數,我們可以用不同的進位制來表示。比如:十進數 57(10),可以用二 進制表示為 111001(2),也可以用五進制表示為 212(5),也可以用八進制表示為 71(8)、用 十六進制表示為 39(16),它們所代表的數值都是一樣的。
1.7.4. 二進制
二進制有兩個特點:它由兩個數碼 0,1 組成,二進制數運算規律是逢二進一。
為區別于其它進制,二進制數的書寫通常在數的右下方注上基數 2,或加后面加 B 表示, 其中 B 是英文二進制 Binary 的首字母。
1.8.Java 語言中的基本數據類型
1.8.1. 數據類型
數據類型:一組性質相同的值的集合以及定義在這個值集合上的一組操作的總稱。
變量是用來存儲值的所在處,它們有名字和數據類型。變量的數據類型決定了如何將代 表這些值的位存儲到計算機的內存中。在聲明變量時也可指定它的數據類型。所有變量都具 有數據類型,以決定能夠存儲哪種數據。
1.8.2. 整數類型:byte、short、int、long
A) Java 各整數類型有固定的表數范圍和字段長度,不受具體 OS 的影響, 以保證 java 程序的可移植性。
B) java 的整型常量默認為 int 型,聲明 long 型常量須后加‘l’或‘L’
C) java 程序中變量通常聲明為 int 型,除非不足以表示較大的數,才使用 long
1.8.4. 字符類型: char
char 型數據用來表示通常意義上 “字符 ”(2 字節 )
Java 中的所有字符都 使用 Unicode Unicode Unicode 編碼,故一個字 符可以存儲一 個字母,一個漢字
字符型變量的表現形式:
A) 字符串常量使用單引號 ’’ 引起來的單個字符,例如:char c1=’a’, char c2=’ 河南’,char c3=’9’
char 類型是可以進行運算 char 類型是可以進行運算的。因為它都對應有 Unicode Unicode Unicode
1.8.5. ASCIIASCII 碼
在計算機內部 ,所有數據都使用 二進制 表示 。每一個二進制位 (bitbit )有 0 和 1 兩種狀態 , 因此 8 個二進制位就可以組合出 256 種狀態 ,這被稱為一個字節 (byte )。 一 個字節共可以用來表示 256 種不同的狀態 ,每一個狀態對應符號 ,就是 256 個符號 ,從 0000000 到 11111111 。
ASCII 碼:上個世紀 60 年代 ,美國制定了一套字符編碼 ,對英語字符與二進制位之間的 關系 ,做了統一規定 。這被稱為 ASCIIASCIIASCIIASCII 碼。ASCIIASCIIASCIIASCII 碼 一共規定了 128 個字符的編碼 ,比如 空格 “SPACE” SPACE” SPACE” 是 32 (二進制 00100000 ), 大寫的字母 A 是 65 (二進制 01000001 )。 這 128 個符號 (包括 32 個 不能打印出來的控制符號 ), 只占用了一個字節的后面 7 位,最前 面的 1 位統一規定為 0。
缺點 :
不能表示所有字符 。相同的編碼表示字符不一樣 :比如 ,130130 在法語編碼中代表了 ,在?來語編碼中?代表 字母 Gimel ( )
1.8.6. Unicode 編碼
亂碼:世界上存在著多種編方式,同一個二進制數字可以被解釋成不的符號。同一個二進制 數字可以被解釋成不的符號。。因此,要想打開一個文本件就必須知道它的編碼方式 否則 用錯誤的碼表解讀,
Unicode :一 種編碼,將世界上所有的符號都納入其中。每個符號都給予獨一無二的編碼, 使用 Unicode Unicode 沒有亂碼問題,Unicode 編碼存在著資源浪費的問題
1.8.7. UTF-8
UTF UTF-8 是在互聯網上使用最廣的一種 Unicode Unicode Unicode Unicode 的實現方 式。 TF UTF-8 是一種變長的編碼方式。它可以使用 1-6 個字節表示一符號,根據 不同的符 號而變化字節長度。 UTF-8 的編碼規則: 對于單字節的 UTF -8 編碼,該字節的最高位為 0,其余 7 位用來對字符進行編碼(等同 于 ASCIIASCIIASCII 碼)。 對于多字節的 UTF -8 編碼,如果包含 n 個字節,那么第一的前 n 位為 1,第一個字節 的第 n+1 位為 0,該字節的剩余各位用來對符進行編碼。在第一個之后所有的字節,都 是最高兩位為 “10”,其余 6 位用來對字符進行編碼
1.8.8. 布爾類型: boolean
boolean 類型用來判斷邏輯條件,一般于程序流控制: if 條件控制語句; while 循環控制語句; do -while 循環控制語句; for 循環控制語句; boolean 類型數據只允許取值 true 和 false ,無 null 不可以使用 0 或非 0 的整數替代 false 和 true ,這點和 C 語言不同。 Java 虛擬機中沒有任何供 boolean 值專用的字節碼指令, Java 語言表達所操作的 boolean 值,在編譯之后都使用 java 虛擬機中的 int 數據類型來代替:true 用 1 表示, false 用 0 表示。
1.9.變量與類型
變量:常量是固定不變的數據,那么在程序中可以變化的量稱為變量。 定義格式: 數據類型 變量名 = 變量值; 數據類型 變量名 = 數據值; int a = 100; 使用
其中 int 是數據類型,指定了變量只能存儲整數,而且指定了存儲范圍為-2147483648~ 2147483648。 其中 a 表示變量名,變量名是標識符,這說明只要是合法的標識符都可以用來做變量 名。在程序中可以通過變量名來操作變量(內存中的小盒子)。 其中“=100”是給變量賦值,即向 a 變量中寫入 100(變量是個小盒子,現在小盒子中保存 的是 100)。注意,給變量賦的值一定要與類型符合,也就是說 int 類型只能存儲整數,而 且必須是在-2147483648~2147483648 范圍內的整數。100 滿足了這兩個條件,所以是正確 的 變量名稱:在同一個大括號范圍內,變量的名字不可以相同。 變量賦值:定義的變量,不賦值不能使用
1.10. 數據類型轉換
Java 程序中要求參與的計算的數據,必須要保證數據類型的一致性,如果數據類型不一致將 發生類型的轉換。轉換的過程中,數據遵循一個原則: 范圍小的數據類型值(如 byte),可以直接轉換為范圍大的數據類型值(如 int); 范圍大的數據類型值(如 int),不可以直接轉換為范圍小的數據類型值(如 byte) 數據類型按照數據范圍從小到大依次列出: byte -> short -> int -> long -> float -> double
有多種類型的數據混合運算時,系統首先自動將所轉換成容量最大那種數據類型,然后再進 行計算。 A) byte,char,short, 之間不會相互轉換,他們三者在計算時首先轉換為 int 類型 。
B) boolean 類型不能與其他數據類型轉換
C) 當把任何基本數據類型的值和字符串 (String)進行連接運算時 (+) ,基本數據類型的值將 自動轉化為字符串 (String)類型 。
1.10.1. 字符串類型: String
String 不是基本數據類型,屬于引用數據類型。使用方式與基本數據類型一致。例如 Stringstr = “abc”; 一個字符串可以串接另一個字符串也可以直接串接其他類型的數據。例如: str=str+ “xyz” ; intn=100; Str=str+n;
1.10.2. 判斷對錯
String str1=100; // 錯誤 String str2=2.8f+””;
1.10.3. 自動轉換
一個 int 類型變量和一個 byte 類型變量進行加法運算, 結果會是什么數據類型?
inti=1; byteb=2; 運算結果,變量的類型將是 int 類型,這就是出現了數據類型的自動類型轉換現象。 自動轉換 :將 取值范圍小的類型 自動提升為 取值范圍大的類型 。
byte 類型內存占有 1 個字節,在和 int 類型運算時會提升為 int 類型 ,自動補充 3 個字節,因此計算后的結果還是 int 類型。 同樣道理,當一個 int 類型變量和一個 double 變量運算時, int 類型將會自動提升 為 double 類型進行運算。范圍小的類型向范圍大的類型提升,byte 、 short、 char 運 算時直接提升為 int 。
1.10.4. 強制類型轉換
表示范圍大的數據類型轉換成范圍小的數據類型,這種方式稱為強制類型轉換 將 1.5 賦值到 int 類型變量會發生什么?產生編譯失敗,肯定無法賦值。
inti=1.5;// 錯誤
分析報錯原因: double 類型內存 8 個字節, int 類型內存 4 個字節。 1.5 是 double 類型,取值范圍大于 int 。可以理解為 double 是 8 升的水壺, int 是 4 升的水壺,不能把大水壺中的水直接放 進小水壺去。 想要賦值成功,只有通過強制類型轉換,將 double 類型強制轉換成 int 類型才能賦值。
自動轉換是 Java 自動執行的,而強制轉換需要我們自己手動執行。 強制類型轉換格式: 范圍小的數據類型 變量 =(范圍小的數據類型) 范圍大的數據類型值; 如: int i = (int)6.718; //i的值為6 或 double d = 3.14; int i2 = (int)d; //i2的值為3
同樣道理,當一個 short 類型與 1 相加,我們知道會類型提升,但是還想給結果賦值給 short 類型變量,就需要強制轉換。
1.10.5. 強制轉換損失精度的問題
浮點轉成整數,直接取消小數點,可能造成數據損失精度。 int 強制轉成 short 砍掉 2 個字節,可能造成數據丟失。 //定義 s 為 short 范圍內最大值 shorts=32767; //運算后,強制轉換,砍掉 2 個字節后會出現不確定的結果 s=(short)(s+10);
1.10.5. 強制轉換損失精度的問題
浮點轉成整數,直接取消小數點,可能造成數據損失精度。 int 強制轉成 short 砍掉 2 個字節,可能造成數據丟失。 //定義 s 為 short 范圍內最大值 shorts=32767; //運算后,強制轉換,砍掉 2 個字節后會出現不確定的結果 s=(short)(s+10);
2.計算機的編碼
在計算機的內部都是二進制的 0、1 數據,如何讓計算機可以直接識別人類文字的問題呢? 就產生出了編碼表的概念 編碼表 :就是將人類的文字和一個十進制數進行對應起來組成一張表格。
2.1.1. ASCII 編碼表
將所有的英文字母,數字,符號都和十進制進行了對應,因此產生了世界上第一張編碼表 ASCII(AmericanStandardCodeforInformationInterchange 美國標準信息交換碼)。
2.1.2. 案例分析
publicstaticvoidmain(
String[]args){ //字符類型變量
charc=‘a’;
inti=1;
//字符類型和 int 類型計算
System.out.println(c+i);
//輸出結果是 98 }
在 char 類型和 int 類型計算的過程中,char 類型的字符先查詢編碼表,得到 97,再和 1 求 和,結果為 98。char 類型提升為了 int 類型。char 類型內存 2 個字節,int 類型內存 4 個字 節。
3.運算符
運算符是一種特殊的號,用以表示數據、賦值和比較等 。 算術運符,賦值運算符,比較運算符,邏輯運算符,位運算符,三元運算符
算術運算符
我們在使用算術運算符時,記得要注意下列事項:
? 加法運算符在連接字符串時要注意,只有直接與字符串相加才會轉成字符串。
? 除法“/”當兩邊為整數時,取整數部分,舍余數。當其中一邊為浮點型時,按正 常規則相除。
? “%”為整除取余符號,小數取余沒有意義。結果符號與被取余符號相同。
? 整數做被除數,0 不能做除數,否則報錯。
3.1. 算數運算符++、–的使用
算數運算符在前面我們已經學習過了,這里進行一些補充。 在一般情況下,算數運算符不會改變參與計算的變量值。而是在原有變量值不變的情況 下,計算出新的值。但是有些操作符會改變參與計算的變量的值,比如++,–。 我們來看一段代碼:
上面代碼的輸出結果 a 值為 4,b 值為 2; 這說明 a 的原有值發生了改變,在原有值的基礎上自增 1;b 的原有值也發生了改變, 在原有值的基礎上自減 1; ? ++運算符,會在原有值的基礎上自增 1; ? --運算符,會在原有值的基礎上自減 1。
int a = 3;
int b = 3;
++a; --b;
System.out.println(a);
System.out.println(b);
上面代碼的輸出結果 a 值為 4,b 值為 2; 這說明++,–運算符單獨使用,不參與運算操作時,運算符前后位置導致的運算結果是一 致的。
接下來,介紹下++,–運算符參與運算操作時,發生了怎樣的變化,我們來看一段代碼:
int a = 3;
int b;
b = a++ + 10;
System.out.println(a);
System.out.println(b); 上面代碼的輸出結果 a 值為 4,b 值為 13; 這里我要強調一下了,當++,–運算符參與運算操作時,后置++,–的作用: ? ++,–運算符后置時,先使用變量 a 原有值參與運算操作,運算操作完成后,變量 a 的值自增 1 或者自減 1;再介紹下++,–運算符前置時,參與運算操作的變化,我們來看一段代碼:
int a = 3
; int b;
b = ++a + 10;
System.out.println(a);
System.out.println(b);
上面代碼的輸出結果 a 值為 4,b 值為 14; 這里我強調一下,當++,–運算符參與運算操作時,前置++,–的作用: ? ++,–運算符前置時,先將變量 a 的值自增 1 或者自減 1,然后使用更新后的新值 參與運算操作。
3.2. 賦值運算符
賦值運算符就是為變量賦值的符號
3.3. 比較運算符
比較運算符,又叫關系運算符,它是用來判斷兩個操作數的大小關系及是否相等關系的, 結果是布爾值 true 或者 false。
3.4. 邏輯運算符
邏輯運算符,它是用于布爾值進行運算的,運算的最終結果為布爾值 true 或 false。
? 短路與&&:參與運算的兩邊數據,有 false,則運算結果為 false; ? 短路或||:參與運算的兩邊數據,有 true,則運算結果為 true; ? 邏輯非! : 參與運算的數據,原先是 true 則變成 false,原先是 false 則變 成 true
3.5. 三元運算符
接下來我們要學習的三元運算符與之前的運算符不同。之前學習的均為一元或者二元運 算符。元即參與運算的數據。 ? 格式: (條件表達式)?表達式 1:表達式 2; ? 表達式:通俗的說,即通過使用運算符將操作數聯系起來的式子,例如: ? 3+2,使用算數運算符將操作數聯系起來,這種情況,我們稱為算數表達式。 ? 3>2,使用比較運算符(也稱為條件運算符)將操作數聯系起來,這種情況, 我們稱為條件表達式。 ? 其他表達式,不再一一舉例。 ? 三元運算符運算規則: 先判斷條件表達式的值,若為 true,運算結果為表達式 1;若為 false,運算結果為 表達式 2。
通過代碼演示,我們來學習下三元運算符的使用:
3.6. 運算符優先級
在學習運算符的過程中,我們發現,當多個運算符一起使用的時候,容易出現不清晰先 后運算順序的問題,那么,在這里,我們來學習下,運算符之間的運算優先級。 下圖是每種運算符的優先級,按照運算先后順序排序(優先級相同的情況下,按照從左 到右的順序依次運算)
.知識小結
? 數據類型轉換
? 數據類型范圍從小到大排序(byte < char < short < int < long < float < double),布爾類型 Boolean 不能參與類型轉換;
? 自動類型轉換,范圍小的數據類型向范圍大的數據類型轉換時使用;
? 強制類型轉換,范圍大的數據類型向范圍小的數據類型轉換時使用。
算數運算符 ? 用來完成算數運算(如加減乘除計算等) ? ++,–運算符的使用 ? ++,–前置(如++a),當參與運算時,變量 a 的值先自增 1,然后用自 增后的新值再參與運算; ? ++,–后置(如 a++),當參與運算時,變量 a 先使用原有值參與運算符, 變量 a 的值再自增 1。
? 賦值運算符 ? 用來完成數據的賦值(如 int a = 100;) ? +=,-,*=,/=這樣的賦值運算符包含了一個強制轉換的操作,會將左右兩邊運算 后的結果,強制類型轉換后賦值給左邊
總結
以上是生活随笔為你收集整理的02-java常量变量数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: day01-计算机操作系统java编程入
- 下一篇: javase阶段总结脑图