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