第二章 变量
一、變量(variable)
1、定義
- 變量是程序的基本組成單位,變量的三個要素為: 類型 名稱 值,即 變量 = 變量名 + 值 + 數據類型
2、使用
- 先聲明,然后賦值,最后使用
3、注意事項和使用細節
- (1).變量表示內存中的一塊存儲區域,該區域有自己的名字(變量名)和類型(數據類型),該區域的數據可以在同一類型范圍內不斷變化
-
(2).變量使用前必須聲明,即定義在使用之前,但是變量在同一作用域內不能重名,也不能重復定義
-
(3).不同變量所占用的存儲空間大小不同,單位:字節
-
(4).Java數據類型分為基本數據類型和引用數據類型
-
{基本數據類型}:
數值型: 整數類型byte(1),short(2),int(4),long(8) ;; 浮點(小數)型 float(4),double(8),
字符型char(2)(存放單個字符),
布爾型boolean(1)(存放true、false) -
{引用數據類型}:類(class)、接口(interface)、數組
-
Java的基本數據類型有固定的范圍和字段長度,不受具體 OS 影響,以保證 Java 的可移植性
二、程序中" + " 的使用
-
1、當左右兩邊都為 數值型 時,做加法運算
-
2、當左右兩邊有一邊為 字符串 時,做拼接運算
-
3、運算順序,從左到右
三、整數類型
1、數值范圍:
- byte ( 1個字節, -128 ~~ 127, 極值為:2的(8 次方/2)次方),
- short(2個字節,-32768 ~~ 32767, 極值為:2的(16次方/2)次方),
- int ( 4個字節,-2147483648 ~~ 2147483647,極值為:2的(32次方/2)次方),
- long( 8個字節,-2 ^63 ~~ 2 ^63 - 1, 極值為:2的(64次方/2)次方),
2、注意事項和使用細節
- (1).java的整形常量默認為 int 型,聲明 long 型變量 需要在數字后加 L/l(由于小寫l和1很相似,一般不寫這個,寫L);例如 long = 3L;
- (2).java中一般不使用 long ,除非溢出時才使用
四、浮點類型
1、浮點數 = 符號位 + 指數位 + 小數位,浮點數的部分尾數可能丟失,所以說運行結果是一個近似值
2、單精度float ,占用4字節 ,范圍:-3.403E38 ~~ 3.403E38
3、雙精度double,占用8字節 ,范圍:-1.798E308 ~~ -1.798E308
4、注意事項和使用細節:
- (1).java的浮點形常量默認為 double 型,聲明 float 型變量 需要在數字后加 F/f;例如 float a = 3.14F; 或者 float a = 3.14f;
- (2).一般情況下使用 double , double 更加的精確
- (3).兩種表示方式:
十進制: 5.12 512.0 0.512
科學計數法: 5.12e2 5.12e-2 (e/E均可使用) - (4).浮點數陷阱
- 那么判斷兩個數相等,則需要使用兩個數的差值的絕對值在某個精度范圍內判斷
原方法:
double n1 = 2.7;double n2 = 8.1/3;System.out.println(n1); //輸出結果是 2.1234567System.out.println(n2); //輸出結果是 2.123456789012345if(n1 == n2){ //輸出結果是 不等于!=System.out.println("等于=");}else{System.out.println("不等于!=");}新方法:
double n1 = 2.7;double n2 = 8.1/3;System.out.println(n1); //輸出結果是 2.1234567System.out.println(n2); //輸出結果是 2.123456789012345if(Math.abs(n1 - n2)<00000.1){//輸出結果是 等于=System.out.println("等于=");}else{System.out.println("不等于!=");}五、Java API文檔
1、API,即Application Programming Interface 應用程序編程接口,Java所提供的類還有方法,中文在線文檔:www.matools.com
2、Java提供了大量的基礎類,ApI文檔就是告訴開發者如何使用這些類以及這些類中所包含的方法
3、JDK 8/11 —> 含有 —> 包1、包2、、包… —> (每個包)含有 —> 接口、類(…)、異常 - --> (每個類)含有—> 字段、構造器(構造方法)、成員方法(方法)
4、API查找功能函數方法有:
- 包 ->-> 類 ->-> 方法
- 直接 索引 (查找) 該方法
六、字符型 char
1、字符類型可以表示單個字符,變量類型是 char ,char 占兩個字節,使用可以存放漢字,多個字符使用 String
char c1 = 'a';char c2 = '\t';char c3 = '辰';char c4 = '97';2、注意事項和使用細節
- (1).字符常量是單引號 ‘’ 包裹的單個字符;
- (2).Java中還允許使用轉義字符 ‘’ 來將其后的字符轉變位特殊型字符常量,例如:char c = ‘\n’;//來表示換行符;
- (3).Java中的 char 從本質上來說是一個整數,在輸出時,是 Unicode碼 所對應的字符 tool.chinaz.com/Tools/Unicode.aspx (Unicode編碼轉換工具網站)
- (4).可以直接給 char 賦值一個整數,然后輸出是,會按照所對應的 Unicode碼 字符輸出
- (5).char 類型可以參與運算,相當于一個整數,因為它都有對應的 Unicode碼
3、字符類型本質探討
-
(1).字符型存儲到計算機中,需要將字符對應的碼值(整數)找出來,比如 ‘a’
-
(2).字符和碼值的對應關系是通過字符編碼表所決定的(規定好的)
-
(3).常見編碼
ASCII 1個字節表示 一共有128個字符
Unicode 2個字節表示 字母和漢字都是用2個字節來表示,浪費了空間
UTF - 8 1個 ~ 3個字節 字母使用1個字節 漢字使用1個字節
七、布爾型 boolean
1、該類型的變量只允許取值取 true 和 false,無 null
2、大小占 1 個字節
3、適用于邏輯運算,一般用于控制流程
4、注意事項和使用細節:
- (1).不能使用 0 或者 非0整數 來代替 false 和 true,這點和 C語言 不同
八、基本數據類型轉換
1、自動轉換規則:在Java程序進行賦值或者運算是,精度小的數據類型將會自動轉換成精度大的數據類型
2、數據類型按照精度(容量)大小排序
- char --> int --> long --> float --> double
- byte --> short --> int --> long --> float --> double
- 這是兩條獨立分支,由這個順序也能看出來 char 和 (byte/short) 之間不能夠進行自動轉換
3、注意事項和使用細節:
- (1).當有多種類型的數據混合運算時系統首先自動將所有數據轉換成容量最大的那種數據類型,然后在進行計算,并最終結果保留最大數據類型
- (2).當我們把精度(容量)大的數據類型賦值給精度(容量)小的數據類型時,就會報錯;反之,則會進行自動轉換
- (3).char 和 (byte/short) 之間不能夠進行自動轉換
- (4).char byte short 三者可以運算,但是計算時首先轉換成 int 類型
- (5).boolean 不參與運算
- (6).自動提升原則:表達式結果的類型自動提升為操作數中最大的類型
九、基本數據類型強制轉換
1、強制類型轉換 //ForceConventDetail.java
- 介紹:自動類型轉換的逆過程,高精度(大容量)的數據類型轉換為容量較低精度(小容量)的數據類型,使用時要加上強制轉換符(),但可能會造成精度降低或者溢出,要注意
2、注意事項、使用細節和說明
- (1).當進行數據的大小從 大 --> 小,就需要使用轉換
- (2).強制轉換符號() 只對于最近的操作數有效,往往使用小括號提升優先級
- (3).char 類型可以保存 int常量值,但是不能保存int變量值,需要強制轉換
- (4).byte 和 short 類型在進行運算時,當作int類型來處理
十、基本數據類型和 String 類型的轉換
1、介紹:在程序開發中,我們經常需要將 基本的數據類型 轉成 String類型,或者將 String類型 轉換成 基本數據類型
2、基本數據類型 轉成 String類型
- 語法:將 基本數據類型的值 加上 " " 即可
3、String類型 轉成 基本數據類型
- 語法:通過基本數據類型 的包裝類調用 parseXX方法即可 //StringToBasic.java
4、注意事項和使用細節
- 在使用字符串 強制轉換成 基本數據類型時,一定要保證轉換成有效的數據,如果格式不正確,則會拋出異常,程序會終止
十一、其他基本數據類型 強轉 String 類型的方法
(1)String.valueOf(boolean b) : 將 boolean 變量 b 轉換成字符串
(2)String.valueOf(char c) : 將 char 變量 c 轉換成字符串
(3)String.valueOf(char[] data) : 將 char 數組 data 轉換成字符串
(4)String.valueOf(char[] data, int offset, int count) : 將 char 數組 data 中 由 data[offset] 開始取 count 個元素 轉換成字符串
(5)String.valueOf(double d) : 將 double 變量 d 轉換成字符串
(6)String.valueOf(float f) : 將 float 變量 f 轉換成字符串
(7)String.valueOf(int i) : 將 int 變量 i 轉換成字符串
(8)String.valueOf(long l) : 將 long 變量 l 轉換成字符串
(9)String.valueOf(Object obj) : 將 obj 對象轉換成 字符串, 等于 obj.toString()
十二、String類型 強轉 數字的基本數據類型的方法
要將 String 轉換成基本數據型態轉 ,大多需要使用基本數據型態的包裝類別
比如說 String 轉換成 byte ,可以使用 Byte.parseByte(String s) ,這一類的方法如果無法將 s 分析 則會丟出 NumberFormatException
(1)byte : Byte.parseByte(String s) : 將 s 轉換成 byte
(2)Byte.parseByte(String s, int radix) : 以 radix 為基底 將 s 轉換為 byte ,比如說 Byte.parseByte(“11”, 16) 會得到 17
(3)double : Double.parseDouble(String s) : 將 s 轉換成 double
(4)float : Float.parseFloat(String s) : 將 s 轉換成 float
(5)int : Integer.parseInt(String s) : 將 s 轉換成 int
(6)long : Long.parseLong(String s)
十三、課后作業
1、閱讀程序,寫出輸出
public class Homework1{public static void main(String[] args){int n1;n1 = 13;int n2;n2 = 17;int n3;n3 = n1 + n2;System.out.println("n3=" + n3);//輸出結果:30int n4 = 38;int n5 = n4 - n3;System.out.println("n5=" + n5);//輸出結果:8}}2、使用char類型,分別保存 \n,\t,\r,\,1,2,3等字符,并打印輸出
public class Homework2{public static void main(String[] args){char c1 = '\n';char c2 = '\t';char c3 = '\r';char c4 = '\\';char c5 = '1';char c6 = '2';char c7 = '3';System.out.println(c1);System.out.println(c2);System.out.println(c3);System.out.println(c4);System.out.println(c5);System.out.println(c6);System.out.println(c7);}}輸出結果:\1233、編程,保存兩本書的書名,用 + 拼接,看效果;保存兩個性別,用 + 拼接,看效果;保存兩本書的價格,用 + 拼接,看效果
public class Homework3{public static void main(String[] args){//書名String s1 = "完美世界";String s2 = "遮天";//性別char gender1 = '男';char gender2 = '女';//價格double p1 = 15.5;double p2 = 4.5;System.out.println(s1 + s2);System.out.println(gender1 + gender2);//輸出 男字符碼值 + 女字符碼值System.out.println(p1 + p2);}}運行結果:完美世界遮天5290620.04、編程實現以下效果:
姓名 年齡 成績 性別 愛好
XXX XXX XXX XXX XXX
public class Homework1{public static void main(String[] args){String name = "陳鑫";int age = 21;double score = 92.5;char gender = '男';String hobby = "垂釣";System.out.println("姓名\t年齡\t成績\t性別\t愛好\t\n"+name + '\t' + age + '\t' + score + '\t' + gender + '\t' + hobby);}}運行結果:姓名 年齡 成績 性別 愛好陳鑫 21 92.5 男 垂釣總結
- 上一篇: 2023最新织梦CMS高端红酒酒水类网站
- 下一篇: PreScan 教程:0. PreSca