1、關(guān)鍵字炕置、變量男韧、數(shù)據(jù)類(lèi)型
-
關(guān)鍵字和保留字
定義:被Java語(yǔ)言賦予特殊含義,有專(zhuān)門(mén)用途的字符串
特點(diǎn):關(guān)鍵字中所有字母都為小寫(xiě)
關(guān)鍵字列表
- 數(shù)據(jù)類(lèi)型
class
甚纲、interface
朦前、enum
、byte
春哨、short
恩伺、int
、long
凰荚、float
褒脯、double
、char
,boolean
,void
- 流程控制
if
到涂、else
爽彤、switch
缚陷、case
、default
嚷节、while
、do
衩婚、for
效斑、break
、continue
奇昙、return
- 訪問(wèn)權(quán)限
public
敌完、protected
、private
- 定義類(lèi)
abstract
什湘、final
晦攒、static
、synchronized
- 類(lèi)與類(lèi)之間的關(guān)系
extends
腹尖、implements
- 類(lèi)實(shí)例相關(guān)
new
伐脖、this
、super
绎巨、instanceof
- 異常處理
try
蠕啄、catch
、finally
和媳、throw
哈街、throws
- 包相關(guān)
package
、import
- 其他關(guān)鍵字
native
她倘、strictfp
、transient
前硫、volatile
荧止、assert
- 值關(guān)鍵字
true
、false
嗤详、null
保留字
goto
瓷炮、const
保留字、關(guān)鍵字不能被使用
-
標(biāo)識(shí)符 Identifier (變量苍狰、方法烘绽、類(lèi))
Java對(duì)各種變量、方法和類(lèi)等要素命名時(shí)使用的字符序列成為標(biāo)識(shí)符
技巧:凡是自己可以起名字的地方都教標(biāo)識(shí)符
定義合法標(biāo)識(shí)符的規(guī)則:
- 由26個(gè)英文字母大小寫(xiě)翔忽、0-9盏檐、_或$組成
- 不能以數(shù)字開(kāi)頭
- 不可以使用關(guān)鍵字和保留字、但可以包含
- Java中嚴(yán)格區(qū)分大小寫(xiě)材失,長(zhǎng)度無(wú)限制
- 標(biāo)識(shí)符不能包含空格
-
Java中的名稱(chēng)命名規(guī)范
- 包名: 多個(gè)單詞組成時(shí)所有字母都小寫(xiě):
myproducttest
- 類(lèi)名硫豆、接口名:多個(gè)單詞組成所有單詞首字母大寫(xiě):
MyProductTest
- 變量名、方法名:首字母小寫(xiě)旨别、其他單詞首字母大寫(xiě):
myProductTest
- 常量名:所有字母都大寫(xiě)汗茄,多個(gè)單詞用下劃線分割:
MY_PRODUCT_TEST
- 包名: 多個(gè)單詞組成時(shí)所有字母都小寫(xiě):
在起名字時(shí),為了提高閱讀性胆屿,要盡量有意義偶宫,“見(jiàn)名知意”
java采用unicode字符集纯趋,因此標(biāo)識(shí)符也可以使用漢字聲明,但不建議使用
可以看看《代碼簡(jiǎn)潔之道.pdf》
-
變量
概念:內(nèi)存的一個(gè)存儲(chǔ)區(qū)域吵冒,該區(qū)域的數(shù)據(jù)可以在同一類(lèi)型范圍內(nèi)不斷變化痹栖。變量是程序中最基本的存儲(chǔ)單元。包含變量類(lèi)型疗我、變量名和存儲(chǔ)的值南捂。
作用:用于在內(nèi)存中保存數(shù)據(jù)
注意事項(xiàng):
- Java中每個(gè)變量都需要
先聲明
,后使用
- 使用變量名來(lái)訪問(wèn)這塊區(qū)域的數(shù)據(jù)
- 變量的作用域:其定義所在的一對(duì)
{}
內(nèi) - 變量有在其作用域內(nèi)才有效
- 在同一個(gè)作用域內(nèi)麦牺,不能定義重名變量
public class myTest { public static void main(String[] args) { int myAge = 12; System.out.println(myAge); // System.out.println(myNumber); // 在使用myNumber之前未定義 int myNumber; // System.out.println(myNumber); // 使用myNumber之前必須初始化 myNumber = 1001; System.out.println(myNumber); // int myAge = 11; 在同一個(gè)作用域下重復(fù)定義變量 } }
- Java中每個(gè)變量都需要
-
變量的類(lèi)型
基本數(shù)據(jù)類(lèi)型 primitive type
數(shù)值型:
byte(1字節(jié))
剖膳、short(2字節(jié))
岭辣、int(4字節(jié))
、long(8字節(jié))
浮點(diǎn)型:
float
(4字節(jié))枕荞、double(8字節(jié))
字符型:
char(2字節(jié))
布爾型:
boolean
(1字節(jié))1字節(jié)等于 8bit
引用數(shù)據(jù)類(lèi)型 reference type
類(lèi):class
接口: interface
數(shù)組:[]
public class Test {
public static void main(String[] args) {
// 1搞动、 整型
byte b1 = 12;
byte b2 = -128;
// b2 = 128; 超出范圍會(huì)報(bào)錯(cuò)
System.out.println(b1);
System.out.println(b2);
short s1 = 128;
// 通常定義整數(shù)時(shí),使用int型
int i1 = 1234;
//聲明long型變量矗烛,必須以'l'或者"L"結(jié)尾
long l1 = 123456L;
System.out.println(l1);
// 2、浮點(diǎn)型 不要求精度可以使用
// 通常定義浮點(diǎn)型變量時(shí)碌嘀,使用double型
// 單精度 4 字節(jié) float
// 聲明float型變量必須以'f'或者"F"結(jié)尾
float f1 = 12.3F; //如果不加F/f 會(huì)報(bào)錯(cuò) <不兼容的類(lèi)型>
System.out.println(f1);
// 雙精度 8 字節(jié) double
double d1 = 123.3;
System.out.println(d1 + 1);
// 3歪架、字符型 char (一個(gè)字符=2字節(jié))
// 聲明char型變量和蚪,通常使用一對(duì)''
char c1 = 'a';
// c1 = 'AB'; 錯(cuò)誤!字符型只能寫(xiě)一個(gè)字符
System.out.println(c1);
char c2 = '1';
char c3 = '中';
System.out.println(c2);
System.out.println(c3);
char c4 = '\n';
System.out.print("hello" + c4);
System.out.println("world");
// 4怯疤、布爾類(lèi)型 boolean
// 只有兩個(gè)值 true 和 false
boolean bool1 = true;
// bool1 = false;
System.out.println(bool1);
boolean isMarried = true;
if(isMarried) {
System.out.println("不能參加單身party了");
} else {
System.out.println("你可以多談?wù)勁笥?);
}
}
}
-
類(lèi)型轉(zhuǎn)換 **
自動(dòng)類(lèi)型轉(zhuǎn)換(提升)
前提: 這里討論的只是7中基本數(shù)據(jù)類(lèi)型之間的運(yùn)算催束,不包含boolean類(lèi)型
類(lèi)型從小到大會(huì)自動(dòng)提升類(lèi)型 例如
byte
=>short
/int
/long
/float
/double
特別的: 當(dāng)
byte
抠刺、char
、short
三種類(lèi)型的變量做運(yùn)算時(shí)矫付,結(jié)果為int整型運(yùn)算時(shí) 凡事"小于"int型的運(yùn)算 都以int 類(lèi)型變量接收結(jié)果
class Test { public static void main(String[] args) { byte b1 = 2; int i1 = 129; int i2 = b1 + i1; long l1 = b1 + i1; System.out.println(i2); float f = b1 + i1; System.out.println(f); short s1 = 123; double d1 = s1; System.out.println(d1); char c1 = 'a'; int i3 = 10; int i4 = c1 + i3; System.out.println(i4); byte b2 = 3; short s2 = 123; // short s3 = b2 + s2; // 會(huì)報(bào)類(lèi)型錯(cuò)誤 b2 + s2自動(dòng)升類(lèi)型為int // 只能使用int 以及 "大于" int 容量的數(shù)據(jù)類(lèi)型接收結(jié)果 int i5 = b2 + s2; long l2 = b2 + s2; } }
強(qiáng)制類(lèi)型轉(zhuǎn)換
需要使用`()`作為強(qiáng)轉(zhuǎn)符
數(shù)據(jù)類(lèi)型容量 由高轉(zhuǎn)低
由高轉(zhuǎn)低強(qiáng)轉(zhuǎn)類(lèi)型 可以能會(huì)中造成數(shù)據(jù)精度問(wèn)題买优、數(shù)據(jù)截?cái)鄦?wèn)題
class Test {
public static void main(String[] args) {
// 精度損失
double d1 = 12.3;
int i1 = (int)d1;
System.out.println(i1); // 12
// 精度損失
int i2 = 128;
byte b = (byte)i2;
System.out.println(b); // -128
}
}
數(shù)據(jù)類(lèi)型轉(zhuǎn)換擴(kuò)展
class Test {
public static void main(String[] args) {
long l = 123123; // 如果不寫(xiě)L 相當(dāng)于 將int 123123 自動(dòng)轉(zhuǎn)換成了long
System.out.println(l);
// long l1 = 123123123213222123; //編譯失敗過(guò)大整數(shù),超過(guò)了int的容量范圍并未有'L'的long型標(biāo)記
long l1 = 123123123213222123L;
// float f1 = 12.3;// 編譯失敗,12.3會(huì)被當(dāng)做double類(lèi)型杀赢,需要強(qiáng)制類(lèi)型轉(zhuǎn)換
// 整數(shù)常量,默認(rèn)類(lèi)型為int型
// 浮點(diǎn)型常量滤淳,默認(rèn)類(lèi)型為double型
byte b = 12;
// byte b1 = b + 1; // 編譯失敗砌左,1是整數(shù)常量 int 高轉(zhuǎn)低需要強(qiáng)制轉(zhuǎn)換 否則報(bào)錯(cuò)
// float f1 = b + 12.3 // 編譯失敗,12.3 是浮點(diǎn)型常量 double 高轉(zhuǎn)低需要強(qiáng)制轉(zhuǎn)換 否則報(bào)錯(cuò)
}
}
-
String類(lèi)型
String
類(lèi)型是引用數(shù)據(jù)類(lèi)型,聲明String
類(lèi)型變量是使用一對(duì)""
String
類(lèi)型可以和8種基本數(shù)據(jù)類(lèi)型進(jìn)行運(yùn)算屁擅,且運(yùn)算只能是連接運(yùn)算"+",運(yùn)算結(jié)果仍然是String
類(lèi)型
class Test {
public static void main(String[] args) {
String s1 = "Hello World";
System.out.println(s1);
String s2 = "a";
String s3 = "";
int number = 1001;
String numberStr = "學(xué)號(hào):"
String info = numberStr + number; // 連接運(yùn)算
System.out.println(info);
}
}
-
變量之進(jìn)制
所有數(shù)字在計(jì)算機(jī)底層都以二進(jìn)制形式存在派歌。
對(duì)于整數(shù)有四種標(biāo)識(shí)方式
- 二進(jìn)制(binary): 0 / 1 ,滿二進(jìn)一胶果。以0b或者0B開(kāi)頭早抠。
- 十進(jìn)制(decimal): 0-9, 滿十進(jìn)一。
- 八進(jìn)制(octal):0-7贝或,滿八進(jìn)一咪奖。以0開(kāi)頭酱床。
- 十六進(jìn)制(hex):0-9A-F,滿十六進(jìn)一扇谣。以0x或者0X開(kāi)頭罐寨。A-F不區(qū)分大小寫(xiě)
class BinaryTest {
public static void main(String[] args) {
int num1 = 0b110; // 二進(jìn)制
int num2 = 110; // 十進(jìn)制
int num3 = 0127; // 八進(jìn)制
int num4 = 0x124A;// 十六進(jìn)制
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
}
}
二進(jìn)制
Java整數(shù)常量默認(rèn)是int類(lèi)型,當(dāng)用二進(jìn)制定義整數(shù)時(shí)跋破,其第32位是符號(hào)位;當(dāng)是long類(lèi)型時(shí)瓶蝴,二進(jìn)制默認(rèn)占64位,第64位是符號(hào)位拧簸。
二進(jìn)制的整數(shù)有如下三種形式
- 原碼:直接將一個(gè)數(shù)值轉(zhuǎn)換成二進(jìn)制數(shù)男窟,最高位是符號(hào)位。
- 負(fù)數(shù)的反碼:是對(duì)原碼按位去反弟劲,只是最高位(符號(hào)位)確定為1姥芥。
- 負(fù)數(shù)的補(bǔ)碼:其反碼加1。
計(jì)算機(jī)以二進(jìn)制補(bǔ)碼的形式保存所有的整數(shù)
- 整數(shù)的原碼庸追、反碼、補(bǔ)碼都相同
- 負(fù)數(shù)的補(bǔ)碼是其反碼+1
二進(jìn)制轉(zhuǎn)十進(jìn)制
正數(shù)二進(jìn)制 按位次冪相加
負(fù)數(shù)二進(jìn)制一般都是補(bǔ)碼读整,負(fù)數(shù)需要反推 咱娶,補(bǔ)碼 - 1 取反 求出原碼 按位次冪相加
十進(jìn)制轉(zhuǎn)二進(jìn)制
用一個(gè)數(shù)不停的除以二取余,得到的結(jié)果逆向就是二進(jìn)制