常量:程序中固定不變化的值。
-
字面值常量: 字面量溜歪,就表示直接給出的一個(gè)值(可以是整數(shù)若专, 小數(shù), true蝴猪,false等等)调衰, 直接量
- 比如:整數(shù)常量1,2自阱,3嚎莉,小數(shù)常量3.14,布爾常量false沛豌,true等
定義的final變量
變量的定義
-
定義: 表示存儲(chǔ)空間趋箩,可用來存放某一類型的常量,沒有固定值加派,并可以重復(fù)使用叫确,也可以用來存儲(chǔ)某種類型的未知數(shù)據(jù)。
先定義變量芍锦,再賦值:
數(shù)據(jù)類型 變量名; 變量名 = 值;
在聲明時(shí)同時(shí)賦值:
數(shù)據(jù)類型 變量名 = 初始化值
-
特點(diǎn)
占據(jù)著內(nèi)存中的某一塊存儲(chǔ)區(qū)域
該區(qū)域有自己的名稱(變量名)和類型(數(shù)據(jù)類型)
可以被重復(fù)使用
該區(qū)域的數(shù)據(jù)可以在同一類型范圍內(nèi)不斷變化
變量分類 - 作用域 - 使用規(guī)則
-
分類
-
成員變量 / 字段(又稱全局變量): 直接定義在類的花括號(hào)中的變量(方法外)
- 報(bào)錯(cuò): 無法從靜態(tài)上下文中引用非靜態(tài)變量, 定義成員變量使用
static
修飾static int age = 17
- 報(bào)錯(cuò): 無法從靜態(tài)上下文中引用非靜態(tài)變量, 定義成員變量使用
-
局部變量: 變量除了成員變量之外机打,其他就是局部變量呛哟。
- 根據(jù)定義的位置不同有3種表現(xiàn)形式:方法形參,方法內(nèi)變量货岭,代碼塊變量空另。
-
-
作用域
- 定義: 起作用的領(lǐng)域
-
使用規(guī)則
1.變量必須先聲明魄幕,并且初始化后才能使用
2.聲明變量必須有數(shù)據(jù)類型
3.同一作用域內(nèi)變量名不能重復(fù)定義
數(shù)據(jù)類型
-
基本 / 原生數(shù)據(jù)類型
-
數(shù)值型
整數(shù)類型:
byte
/short
/int
/long
陕贮, 不同的整數(shù)類型在內(nèi)存中占用的內(nèi)存空間大小不同小數(shù)類型:
float
/double
-
字符型
-
char
: 字母 / 符號(hào)
-
-
布爾型
-
boolean
: true / false
-
-
-
引用 / 對(duì)象數(shù)據(jù)類型
- 類 / 接口 / 數(shù)組
整數(shù)類型(byte-short-int-long)
-
表現(xiàn)形式
二進(jìn)制整數(shù):0B或0b開頭(Java7的新特性)匣屡,如:
int a = 0B110;
八進(jìn)制整數(shù):要求以0開頭,如
int a = 012;
十進(jìn)制整數(shù):如:
int a = 17;
十六進(jìn)制整數(shù):要求0X或0x開頭女气,如
int a = 0x12;
-
注意
-
Java語言的整型常量默認(rèn)是
int
型杏慰,聲明long
型變量后加上'l'或'L',因小寫的l容易和數(shù)字1相混淆,建議使用大寫Lint num = 128L
默認(rèn)情況下,一個(gè)整型的字面量默認(rèn)是
int
類型
-
小數(shù)類型(float-double)
float
逃默、double
類型:表示小數(shù)類型 / 浮點(diǎn)類型,float
表示單精度類型簇搅,double
表示雙精度類型完域,但是二者都不能表示精確的小數(shù)。-
默認(rèn)情況下, 一個(gè)浮點(diǎn)類型的字面量默認(rèn)是
double
類型瘩将。若要聲明一個(gè)常量為float
型吟税, 則需在常量后加上f 或 F,double
常量后面的D或d可省略-
float
/double
都不能精確的表示小數(shù)姿现,那么在精度要求高的系統(tǒng)比如銀行系統(tǒng)里肠仪,那怎么表示精確的小數(shù)呢?后面我們會(huì)講BigDecimal類型备典,它表示任意精度的數(shù)據(jù)
double a = 0.00000000000000000004; double b = 0.000000000045; System.out.println(a + b); // 0.000000000045
-
字符類型 - 3種表示形式
-
直接使用單個(gè)字符來指定字符常量异旧,格式如'◆'、'A'提佣,'7'
char a1 = 'A'; System.out.println(a1); // A
-
直接作為十進(jìn)制整數(shù)數(shù)值使用吮蛹,但是數(shù)據(jù)范圍在[0,65535]拌屏,格式如97, 但是打印出來的值依然是ASCII碼表對(duì)于的符號(hào), 如97打印出來是字符a
char a2 = 65 // A
-
和2一樣潮针,只不過表示的是16進(jìn)制的數(shù)值,格式如'\uX'倚喂,X表示16進(jìn)制整數(shù)每篷;如:97的16進(jìn)制是61。那么表示為‘\u0061’打印出來也是a
char a3 = '\u0041' // A
引用類型
除了8種基本數(shù)據(jù)類型端圈,其他所有類型都是引用數(shù)據(jù)類型焦读,包括類、接口舱权、數(shù)組吨灭。引用數(shù)據(jù)類型默認(rèn)初始值都是null
-
常用
String
類型- 字符串都得使用 "" 括起來的
String a = "申明字符串"
- 字符串都得使用 "" 括起來的
數(shù)據(jù)過大 / 溢出
-
定義: 當(dāng)要表示的數(shù)據(jù)超出數(shù)據(jù)類型的臨界范圍時(shí),稱為溢出刑巧。溢出情況發(fā)生時(shí)程序并沒有做數(shù)據(jù)范圍檢查處理喧兄,此時(shí)會(huì)出現(xiàn)數(shù)據(jù)紊亂情況
大容器轉(zhuǎn)小容器 會(huì)失去精度
基本類型的自動(dòng)轉(zhuǎn)換
- 在8大基本數(shù)據(jù)類型中, boolean不屬于數(shù)值類型啊楚, 不參與轉(zhuǎn)換
-
自動(dòng)類型轉(zhuǎn)換 / 隱式類型轉(zhuǎn)換
-
當(dāng)把小數(shù)據(jù)范圍類型的數(shù)值或變量賦給另一個(gè)大數(shù)據(jù)范圍類型變量吠冤,系統(tǒng)可以完成自動(dòng)類型轉(zhuǎn)型。這好比把裝一斤水容器里的水倒進(jìn)可以裝兩斤水的容器里一樣恭理。
隱性轉(zhuǎn)換栗子.png
-
-
強(qiáng)制類型轉(zhuǎn)換 / 顯示類型轉(zhuǎn)換
當(dāng)把大范圍類型的數(shù)值或變量賦給另一個(gè)小范圍類型變量時(shí)拯辙,此時(shí)系統(tǒng)不能自動(dòng)完成轉(zhuǎn)換,需要加上強(qiáng)制轉(zhuǎn)換符,但這樣的操作可能造成數(shù)據(jù)精度的降低或溢出涯保,所以使用時(shí)要格外注意诉濒。
-
這就好比把裝兩斤水容器里的水倒在可以裝一斤水的容器里,是可能造成水溢出的夕春。若要堅(jiān)持把4斤蘋果塞進(jìn)一個(gè)裝3斤的袋子里未荒,我們要怎么辦?動(dòng)用暴力及志。強(qiáng)制類型轉(zhuǎn)換片排,可能造成溢出和精度損失。
float f2 = (float)d1 // double --> float
邏輯運(yùn)算符
-
&
&&
當(dāng)兩個(gè)boolean表達(dá)式都為true速侈, 兩者結(jié)果都為true率寡,其他情況為false
-
區(qū)別
&
(位與): 如果A表達(dá)式為false, 也會(huì)判斷B表達(dá)式倚搬, 再返回false&&
(短路與): 如果A表達(dá)式為false冶共, 不會(huì)判斷B表達(dá)式, 直接返回false短路與效率更高
System.out.println(false & (1 / 0 == 0)); // 報(bào)錯(cuò) System.out.println(false && (1 / 0 == 0)); // 直接返回false
|
||
同上
swich
- 本質(zhì):
switch
僅僅只能支持int
類型. (byte
/short
/char
, 會(huì)自動(dòng)提升為int
類型)- 這里的數(shù)值的類型是除
long
之外的整型類型每界,也就是說switch
支持的類型是byte
比默,short
,char
盆犁,int
- 這里的數(shù)值的類型是除
- 區(qū)別
-
if
: 判斷條件是boolean
類型的 -
switch
: 判斷條件是整數(shù)表達(dá)式 == int類型的值
-
- 注意
-
case
只是用來為switch
選擇一個(gè)執(zhí)行代碼的入口命咐,如果一旦進(jìn)入某個(gè)入口之后,后面的case
實(shí)際上已經(jīng)失去了判斷的意義谐岁,也就是說代碼在進(jìn)入switch
執(zhí)行的時(shí)會(huì)把入口case
之后的case
統(tǒng)統(tǒng)忽略醋奠,會(huì)一直往下執(zhí)行,直到遇到break
或return
伊佃。(穿透)所以大家可以發(fā)現(xiàn)窜司,每一個(gè)case
后面沒有{}這個(gè)符號(hào)來表示一個(gè)代碼塊。
-
練習(xí)
for(int count=0;count<6; count++){
for(int j=0; j<count; j++){
System.out.print("*");
}
System.out.println();
}
int line = 1;
for(int count=1;count<10; count++){
for(int j=1; j<count; j++){
System.out.print(j+ "x" + line +"=" +j*line +"\t");
}
System.out.println();
line++;
}
/*
1. 輸出三角形圖案
*
**
***
****
*****
2. 九九乘法表
*/