Java講課筆記04:變量與常量
文章目錄
零、本講學(xué)習目標
1、學(xué)會變量的定義
2、了解變量的數(shù)據(jù)類型
3、掌握變量類型轉(zhuǎn)換的方式
4、明確變量的作用域
5、熟悉Java中的常量
一、變量(Variable)
1、變量定義
(1)變量定義語法格式
(2)變量定義示例
(3)變量在內(nèi)存中的狀態(tài)變化圖
2、變量數(shù)據(jù)類型
(1)整數(shù)類型變量
(2)浮點數(shù)類型變量
(3)字符類型變量
(4)布爾類型變量
(5)案例:演示變量數(shù)據(jù)類型
3、變量類型轉(zhuǎn)換
(1)自動類型轉(zhuǎn)換
(2)強制類型轉(zhuǎn)換
(3)表達式類型自動提升
(4)強制類型轉(zhuǎn)換格式
4、變量作用域
二、常量(Constant)
1、字面常量(Literal Constant)
(1)整型常量
(2)浮點型常量
(3)字符常量
(4)字符串常量
(5)布爾常量
(6)null常量
2、符號常量(Symbolic Constant)
(1)符號常量定義格式
(2)案例:計算圓面積(采用符號常量PI)
三、課后作業(yè)
1、簡述Java基本數(shù)據(jù)類型
2、輸入兩個實數(shù),編程計算其和差積商。
四、擴展閱讀:不要像小白用戶那樣提問
零、本講學(xué)習目標
1、學(xué)會變量的定義
2、了解變量的數(shù)據(jù)類型
3、掌握變量類型轉(zhuǎn)換的方式
4、明確變量的作用域
5、熟悉Java中的常量
編寫程序?qū)?shù)據(jù)進行加工處理,原始數(shù)據(jù)、中間結(jié)果以及最終結(jié)果都需要存放,而變量就是內(nèi)存里用來存放各種數(shù)據(jù)的容器。對于變量,顧名思義,也就是說一個變量里存放的數(shù)據(jù)在程序執(zhí)行過程中是可以不斷變化的。在程序執(zhí)行期間,數(shù)據(jù)保持不變的容器,那就是常量了。
一、變量(Variable)
1、變量定義
(1)變量定義語法格式
在程序運行期間,隨時可能產(chǎn)生一些臨時數(shù)據(jù),應(yīng)用程序會將這些數(shù)據(jù)保存在一些內(nèi)存單元中,每個內(nèi)存單元都用一個標識符來標識。這些內(nèi)存單元我們稱之為變量,定義的標識符就是變量名,內(nèi)存單元中存儲的數(shù)據(jù)就是變量的值。
(2)變量定義示例
(3)變量在內(nèi)存中的狀態(tài)變化圖
2、變量數(shù)據(jù)類型
Java是一門強類型的編程語言,它對變量的數(shù)據(jù)類型有嚴格的限定。在定義變量時必須先聲明變量的數(shù)據(jù)類型,在為變量賦值時必須賦予和變量同一種類型的值,否則程序在編譯期間就會出現(xiàn)類型匹配錯誤的問題。
Java有8種基本數(shù)據(jù)類型:byte、short、int、long、float、double、char、boolean。
(1)整數(shù)類型變量
在為一個long類型的變量賦值時,所賦值的后面要加上一個字母“L”(或小寫“l(fā)”),說明賦值為long類型。如果賦的值未超出int型的取值范圍,則可以省略字母“L”(或小寫“l(fā)”)。
(2)浮點數(shù)類型變量
一個小數(shù)會被默認為double類型的值,因此在為一個float類型的變量賦值時,所賦值的后面一定要加上字母“F”(或者小寫“f”),而為double類型的變量賦值時,可以在所賦值的后面加上字符“D”(或小寫“d”),也可以不加。
(3)字符類型變量
字符類型變量用于存儲一個單一字符,在Java中用char表示。
Java中每個char類型的字符變量都會占用2個字節(jié)。
在給char類型的變量賦值時,需要用一對英文半角格式的單引號(’’)把字符括起來,如’a’,也可以將char類型的變量賦值為0~65535范圍內(nèi)的整數(shù),計算機會自動將這些整數(shù)轉(zhuǎn)化為所對應(yīng)的字符,如數(shù)值97對應(yīng)的字符為’a’。
(4)布爾類型變量
布爾類型變量用來存儲布爾值,在Java中用boolean表示,該類型的變量只有兩個值,即true和false。
(5)案例:演示變量數(shù)據(jù)類型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
運行程序,查看結(jié)果:
3、變量類型轉(zhuǎn)換
在程序中,當把一種數(shù)據(jù)類型的值賦給另一種數(shù)據(jù)類型的變量時,需要進行數(shù)據(jù)類型轉(zhuǎn)換。根據(jù)轉(zhuǎn)換方式的不同,數(shù)據(jù)類型轉(zhuǎn)換可分為兩種:自動類型轉(zhuǎn)換和強制類型轉(zhuǎn)換。
(1)自動類型轉(zhuǎn)換
自動類型轉(zhuǎn)換也叫隱式類型轉(zhuǎn)換,指的是兩種數(shù)據(jù)類型在轉(zhuǎn)換的過程中不需要顯式地進行聲明。當把一個類型取值范圍小的數(shù)值直接賦給另一個取值范圍大的數(shù)據(jù)類型變量時,系統(tǒng)就會進行自動類型轉(zhuǎn)換。
自動類型轉(zhuǎn)換就好比將小瓶水倒入到大瓶的換裝過程。我們將小瓶水倒入到大瓶中時,由于小瓶的容量比大瓶的容量小,所以倒入的水永遠不可能溢出大瓶。
Java中支持不同數(shù)據(jù)類型之間的自動轉(zhuǎn)換
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
運行程序,結(jié)果如下:
(2)強制類型轉(zhuǎn)換
強制類型轉(zhuǎn)換也叫顯式類型轉(zhuǎn)換,指的是兩種數(shù)據(jù)類型之間的轉(zhuǎn)換需要進行顯式地聲明。當兩種類型彼此不兼容,或者目標類型取值范圍小于源類型時,自動類型轉(zhuǎn)換無法進行,這時就需要進行強制類型轉(zhuǎn)換。
強制類型轉(zhuǎn)換就好比將大瓶水倒入到小瓶中一樣,如果大瓶中的水的容量小于小瓶的大小,那么水是可以完全倒入的;否則多出來的水就會溢出。所以系統(tǒng)默認不支持這種行為,只能由開發(fā)者自己決定是否進行強制類型轉(zhuǎn)換。
在對變量進行強制類型轉(zhuǎn)換時,會發(fā)生取值范圍較大的數(shù)據(jù)類型向取值范圍較小的數(shù)據(jù)類型的轉(zhuǎn)換情況,如將一個int類型的數(shù)轉(zhuǎn)為byte類型,這樣做極容易造成數(shù)據(jù)精度的丟失。
出現(xiàn)丟失精度的原因是,變量b為int類型,在內(nèi)存中占用4個字節(jié),而byte類型的數(shù)據(jù)在內(nèi)存中占用1個字節(jié),當將變量b的類型強轉(zhuǎn)為byte類型后,前面3個高位字節(jié)的數(shù)據(jù)已經(jīng)丟失,這樣數(shù)值就發(fā)生了改變。
(3)表達式類型自動提升
表達式是指由變量和運算符組成的一個算式。變量在表達式中進行運算時,也有可能發(fā)生自動類型轉(zhuǎn)換,這就是表達式數(shù)據(jù)類型的自動提升,如byte、short和char類型的變量在運算期間類型會自動提升為int,然后再進行運算。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
運行程序,結(jié)果如下:
如何判斷b+ s + c表達式里的各個變量類型已經(jīng)自動提升到int類型?
由此可以看到,變量b、s、c自動提升為int類型,其和也是int類型,賦給short或byte類型變量,都是要報錯的。
(4)強制類型轉(zhuǎn)換格式
目標類型 變量名 = (目標類型)值;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
運行程序,結(jié)果如下:
4、變量作用域
變量需要在它的作用范圍內(nèi)才可以被使用,這個作用范圍稱為變量的作用域。
可以看到,在代碼塊里可以訪問在代碼塊之前的變量x。
但是,我們來看一下,在代碼塊后能否訪問在代碼塊里定義的變量y呢?
可以看到,變量y的作用域只在代碼塊里,出了代碼塊,變量y就不再存在了,因此提示“無法解析符號y”。
變量作用域的三個級別:代碼塊級別——>方法級別——>類級別
低級別范圍可以訪問高級別變量,反之則不能訪問,編譯器會報錯。
二、常量(Constant)
常量就是在程序中固定不變的值,是不能改變的數(shù)據(jù)。例如數(shù)字1、字符’a’、浮點數(shù)3.2等。在Java中,常量包括整型常量、浮點數(shù)常量、布爾常量、字符常量等。
1、字面常量(Literal Constant)
(1)整型常量
二進制:由數(shù)字0和1 組成的數(shù)字序列。在JDK 7以后,允許使用二進制字面值來表示整數(shù),此時二進制數(shù)值前面要以0b或0B開頭,目的是為了和十進制進行區(qū)分,如:0b01101100、0B10110101。
八進制:以0開頭,并且其后由0 ~7范圍(包括0和7)內(nèi)的整數(shù)組成的數(shù)字序列,如:0342。
十進制:由數(shù)字0~9范圍(包括0和9)內(nèi)的整數(shù)組成的數(shù)字序列。如:198。
十六進制:以0x或者0X開頭,并且其后由0-9、A-F(包括0和9、A和F)組成的字符序列,如:0x25AF。
不同進制整數(shù)之間的相互轉(zhuǎn)換:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
運行程序,結(jié)果如下:
課堂練習:將十六進制數(shù)7d3e5a轉(zhuǎn)換成其它幾種進制。
(2)浮點型常量
浮點數(shù)常量就是在數(shù)學(xué)中用到的小數(shù),分為float單精度浮點數(shù)和double雙精度浮點數(shù)兩種類型。
2e3f 3.6d 0f 3.84d 5.022e+23f
單精度浮點數(shù)后面以F或f結(jié)尾,而雙精度浮點數(shù)則以D或d結(jié)尾。當然,在使用浮點數(shù)時也可以在結(jié)尾處不加任何后綴,此時Java虛擬機會將浮點數(shù)默認識別為double雙精度浮點數(shù)。
(3)字符常量
字符常量用于表示一個字符,一個字符常量要用一對英文半角格式的單引號(’ ')引起來,它可以是英文字母、數(shù)字、標點符號以及由轉(zhuǎn)義序列來表示的特殊字符。
‘a(chǎn)’ ‘1’ ‘&’ ‘\r’ ‘\n’ ‘\t’
轉(zhuǎn)義字符:
在字符常量中,反斜杠(\)是一個特殊的字符,被稱為轉(zhuǎn)義符,它的作用是用來轉(zhuǎn)義緊隨其后的一個字符。轉(zhuǎn)義后的字符通常用于表示一個不可見的字符或具有特殊含義的字符,例如“\n”表示換行。
常見轉(zhuǎn)義字符:
\r :表示回車,將光標定位到當前行的開頭,不會跳到下一行。
\n :表示換行,換到下一行的開頭。
\t :表示制表符,將光標移到下一個制表符的位置,就像在文檔中用Tab鍵一樣。
\b :表示退格符號,就像鍵盤上的Backspace。
\’ :表示單引號字符,表示字符的開始和結(jié)束,如果直接寫單引號字符(’),程序會認為前兩個是一對,會報錯,因此需要使用轉(zhuǎn)義(\’)。
\" :表示雙引號字符,表示字符串的開始和結(jié)束,包含在字符串中的雙引號需要轉(zhuǎn)義,比如"he says,“thank you”."。
\\ :表示反斜杠轉(zhuǎn)義字符,由于在Java代碼中的斜杠(\)是轉(zhuǎn)義符,因此需要表示字面意義上的\,就需要使用雙斜杠\\。
(4)字符串常量
字符串常量用于表示一串連續(xù)的字符,一個字符串常量要用一對英文半角格式的雙引號(" ")引起來。
“Hello World” “903213” “Welcome to Luzhou~”
(5)布爾常量
布爾常量即布爾類型的兩個值true和false,該常量用于區(qū)分一個條件的真假。
(6)null常量
null常量只有一個值null,表示對象的引用為空。
2、符號常量(Symbolic Constant)
Java符號常量,其實就是特殊的變量,也是固定不變的量,有且只能進行一次賦值。只需要在定義變量的語法基礎(chǔ)上加上一個final關(guān)鍵字修飾即可。
(1)符號常量定義格式
final 常量類型 常量名 [= 初始值];
(2)案例:計算圓面積(采用符號常量PI)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
運行程序,結(jié)果如下:
本案例,采用了幾種方式來實現(xiàn)保留到小數(shù)點后面兩位。大家可以選擇一種自己喜歡的方式,在后面的教學(xué)案例里還會用到這個東西。
Python里也有方法實現(xiàn)保留到小數(shù)點后面多少位。
三、課后作業(yè)
1、簡述Java基本數(shù)據(jù)類型
說明每種類型的關(guān)鍵字、占用多少個字節(jié)
2、輸入兩個實數(shù),編程計算其和差積商。
提示:加減乘除運算符號分別是+、-、*、/
四、擴展閱讀:不要像小白用戶那樣提問
很多人一遇到問題就問人,而且描述不清楚問題,只說簡單的問題現(xiàn)象。比如問:“網(wǎng)站訪問不了怎么回事?”“連接不上服務(wù)器怎么辦?”“程序啟動不了怎么辦?”“程序在本地運行沒有問題,上傳到服務(wù)器運行就有問題,怎么回事?”這些問題讓人無法回答,哪位技術(shù)大牛能回答這些問題?
要知道你是程序員不是小白用戶。不懂程序的小白用戶看見網(wǎng)站訪問不了,只能反饋給你網(wǎng)站訪問不了。但作為一名程序員,拿這樣的現(xiàn)象去問人,技術(shù)大牛也不知道怎么解答,因為造成網(wǎng)站訪問不了的原因太多了。作為程序員,你是可以提供更多信息的,比如程序的錯誤信息、錯誤碼、是在運行哪行代碼時出錯的,有了這些信息別人解答問題就更容易了。
我們在學(xué)校時,老師引導(dǎo)我們有問題就問;然而在編程時,有問題馬上問,只看見個別現(xiàn)象就問,反而溝通效率低,自己成長也慢。有問題要先自己找解決方案。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。