變量
變量(variable)可以理解為一個(gè)“有名稱的容器”,用于裝各種不同類型的數(shù)據(jù)。編程人員通過(guò)對(duì)變量的訪問(wèn)和修改,操作內(nèi)存中的數(shù)據(jù)。
對(duì)變量的理解:https://www.cnblogs.com/tigerlion/p/10665321.html
Java是一種強(qiáng)類型(strongly typed)的語(yǔ)言,在編譯時(shí)有嚴(yán)格的語(yǔ)法檢查,需要為變量指定類型。
基本類型 |
整 型 |
byte |
1byte |
(基本類型) |
(整型) |
short |
2byte |
(基本類型) |
(整型) |
int |
4byte |
(基本類型) |
(整型) |
long |
8byte |
(基本類型) |
浮點(diǎn)型 |
float |
4byte |
(基本類型) |
(浮點(diǎn)型) |
double |
8byte |
(基本類型) |
字符型 |
char |
- |
(基本類型) |
布爾型 |
boolean |
- |
引用類型 |
數(shù) 組 |
- |
- |
(引用類型) |
接 口 |
- |
- |
(引用類型) |
類 |
- |
- |
byte類型的范圍是-128~127,即-2^7~2^7-1
char類型相當(dāng)于無(wú)符號(hào)整數(shù)類型,一般認(rèn)為是2字節(jié)(Unicode),但此說(shuō)法有爭(zhēng)議。
字符串不是基本類型,字符串是類,屬于引用類型。
引用類型變量就是指針,只是Java不使用指針的說(shuō)法。
標(biāo)識(shí)符
用于程序變量、類、方法命名的符號(hào)。
|-包括字母、0-9、_、$(美元符號(hào))組成
|-字母包括A-Z、a-z、中文、日文等
|-數(shù)字不打頭
|-不能含有空格和特殊字符(@、#等)
|-不能和關(guān)鍵字重復(fù)
※關(guān)于?$符號(hào)作為變量名
int $n=1;
命名規(guī)范
Java的命名一般遵循“駝峰標(biāo)識(shí)”:每個(gè)單詞首字母大寫(xiě),另外——
|-類:首字符大寫(xiě)
|-變量:首字母小寫(xiě)
|-方法:首字母小寫(xiě)
命名要求:見(jiàn)名知意
整型和字符型
public class Test整型 {
public static void main(String[] args) {
// -------------------------------------------------
// ---進(jìn) 制-------------------------------------------
// -------------------------------------------------
int n2 = 0B10;// 0B二進(jìn)制(binary)(JAVA 7新增)
System.out.println("n1=" n2);
int n8 = 010;// 0八進(jìn)制(octal)
System.out.println("n8=" n8);
int n10 = 10;
System.out.println("n10=" n10);
int n16 = 0XF;// 0X十六進(jìn)制(hexadecimal)
System.out.println("n16=" n16);
// -------------------------------------------------
// ---真正的長(zhǎng)整形,需要加L-------------------------------
// -------------------------------------------------
// 即使聲明long類型,系統(tǒng)也是轉(zhuǎn)換為int類型
// int類型的最大值是2147483647,當(dāng)超過(guò)這個(gè)值時(shí),系統(tǒng)不會(huì)自動(dòng)轉(zhuǎn)換,編譯無(wú)法通過(guò)。
// 需要在數(shù)字末尾加L,以示其為long類型
long lo1 = 2147483648L;
System.out.println("lo1=" lo1);
// -------------------------------------------------
long lo2 = 10_0000_0000L;// Java7開(kāi)始,數(shù)值可以加下劃線以看清位數(shù)
System.out.println("lo2=" lo2);
// -------------------------------------------------
// ---字符類型-------------------------------------------
// -------------------------------------------------
char c1 = 97;// 可直接賦值A(chǔ)SCII碼對(duì)應(yīng)的數(shù)值
System.out.println("c1 = " c1);
char c2 = '字';// 字符用單引號(hào),不分中英文
System.out.println("c2 = " c2);
char c3 = '\'';// 單引號(hào)、雙引號(hào)、反斜線(\)等特殊符號(hào)前面加轉(zhuǎn)移符【\】
System.out.println("c3 = " c3);
}
}
n1=2
n8=8
n10=10
n16=15
lo1=2147483648
lo2=1000000000
c1 = a
c2 = 字
c3 = '
浮點(diǎn)數(shù)
public class TestVar {
public static void main(String[] args) {
// ------------------------------------------------------------------
double d1 = 100.1;// double是默認(rèn)浮點(diǎn)類型
float f1 = 100.1F;// float就必須加F
// ------------------------------------------------------------------
double d2 = .123;// 整數(shù)位可以不寫(xiě)
System.out.println(d2);
double d3 = 321E2;// 科學(xué)計(jì)數(shù)法形式(只有浮點(diǎn)數(shù)可以使用)
System.out.println(d3);
// ------------------------------------------------------------------
// 浮點(diǎn)數(shù)遵循IEEE 754標(biāo)準(zhǔn),并不能精確表示一個(gè)數(shù)
double d4 = 19.9;
System.out.println(d4 * 3);
// 一般算錢的時(shí)候可以轉(zhuǎn)為整數(shù)再算,或者使用BigDecimal類型計(jì)算
int n4 = (int) (d4 * 100);
int calc = n4 * 3;
double d5 = calc / 100;
System.out.println(d5);
// ------------------------------------------------------------------
System.out.println("浮點(diǎn)數(shù)可以除0:" 10_0000.0 / 0);// Infinity:無(wú)窮大
System.out.println("整數(shù)不行:" 10_0000 / 0);
}
}
0.123
32100.0
59.699999999999996
59.0
浮點(diǎn)數(shù)可以除0:Infinity
Exception in thread "main" java.lang.ArithmeticException: / by zero
at TestVar.main(TestVar.java:22)
類型轉(zhuǎn)換

自動(dòng)轉(zhuǎn)換
轉(zhuǎn)換條件
|--類型兼容
|--目標(biāo)類型大于源類型
下圖是合法的數(shù)據(jù)類型之間的轉(zhuǎn)換,
6個(gè)實(shí)心箭頭代表無(wú)損轉(zhuǎn)換,3個(gè)虛線代表有可能丟失精度

public class 自動(dòng)轉(zhuǎn)換 {
public static void main(String[] args) {
byte _byte = 1;
char _char = 2;
short _short = _byte;
int _int = _short;
_int = _char;
long _long = _int;
float _float = _long;
double _double = _float;
}
}
強(qiáng)制類型轉(zhuǎn)換:目標(biāo)類型加括號(hào),可能造成數(shù)據(jù)丟失,稱為“縮小轉(zhuǎn)換”。
double d = 9.9;
int n = (int)d;
編譯器自動(dòng)強(qiáng)轉(zhuǎn):
對(duì)于byte/short/char三種類型,如果等號(hào)右側(cè)數(shù)值沒(méi)有超過(guò)范圍,編譯器自動(dòng)補(bǔ)上(xxx)。
int及更長(zhǎng)的類型無(wú)需轉(zhuǎn)換,因?yàn)橛抑的J(rèn)是int型。
public class 編譯器優(yōu)化 {
public static void main(String[] args) {
System.out.println(" = " System.getenv("JAVA_HOME"));
byte b1 = 127;// 右側(cè)整數(shù)沒(méi)有超過(guò)左側(cè)類型范圍,編譯通過(guò)
byte b2 = 128;// 超過(guò)范圍,編譯失?。篶annot convert from int to byte
byte b3 = 128 - 1;// 編譯通過(guò)
byte b4 = b1 - 1;// 如果變量參與計(jì)算,編譯器拒絕優(yōu)化:cannot convert from int to byte
}
}
來(lái)源:https://www./content-1-321801.html
|