2.1 標(biāo)識符與關(guān)鍵字
2.1.1標(biāo)識符
定義:
用來標(biāo)識類名腌歉、變量名绊率、方法名、類型名究履、數(shù)組名滤否、文件名的有效字符序列稱為標(biāo)識符,簡單地說最仑,標(biāo)識符就是一個(gè)名字 藐俺。
規(guī)則:
標(biāo)識符由字母、下劃線泥彤、美元符號和數(shù)字組成欲芹,長度不受限制。
標(biāo)識符的第一個(gè)字符不能是數(shù)字字符吟吝。
標(biāo)識符不能是關(guān)鍵字(關(guān)鍵字見下面的2.1.3節(jié))菱父。
標(biāo)識符不能是true、false和null(盡管true、false和null不是關(guān)鍵字)浙宜。
練習(xí):
判斷下列符號是否是合法的標(biāo)識符:
$var1官辽、 _var2、aInt 粟瞬、student_Number
2student同仆、 try、var#
注意:
標(biāo)識符中的字母是區(qū)分大小寫的裙品。
2.1.2關(guān)鍵字
定義:
關(guān)鍵字就是具有特定用途或被賦予特定意義的一些單詞俗批,不可以把關(guān)鍵字作為標(biāo)識符來用 。
注意:
關(guān)鍵字都是小寫的市怎。遇到大寫肯定不是關(guān)鍵字岁忘。
2.2數(shù)據(jù)類型與表達(dá)式
2.2.1 變量與常量
2.2.1.1 變量
定義
一個(gè)由標(biāo)識符命名的項(xiàng),其值可以被改變
每個(gè)變量都有類型区匠,例如 int 類型或 Object類型
變量有作用域干像,根據(jù)變量的作用域,變量可以分為類成員變量和局部變量
變量定義格式:
Type varName1[=value1][,varName2=[value2]…];
例如辱志,int num,total=0;
2.2.1.2 常量
定義
常量一旦被初始化以后就不可改變。
常量定義格式:
final Type varName1[=value1][,varName2=[value2]…];
例如狞膘,final int PRICE=30;
final double PI=3.14;
2.2.2 數(shù)據(jù)類型
2.2.2.1 基本數(shù)據(jù)類型
有8種基本數(shù)據(jù)類型:
boolean揩懒、byte、short挽封、int已球、long、float辅愿、double智亮、char。
8種基本數(shù)據(jù)類型習(xí)慣上可分為以下四大類型:
- 邏輯類型(布爾型):boolean
- 整數(shù)類型:byte点待、short阔蛉、int、long
- 字符類型:char
- 浮點(diǎn)類型:float癞埠、double
(1)邏輯類型(布爾型)
布爾類型只有兩個(gè)值true 和 false状原,它們不對應(yīng)于任何整數(shù)值
(2)字符型(char)
用于存儲(chǔ)單個(gè)字符,用單引號括起來
char采用16位Unicode編碼苗踪,表示范圍0 ~ 65535 颠区。
常量:
‘A’,‘b’通铲,‘?’毕莱,‘!’,‘9’,‘好’朋截,‘\t’蛹稍,‘き’,‘モ’
等质和,即用單引號擴(kuò)起的Unicode表中的一個(gè)字符稳摄。
變量:
使用關(guān)鍵字char來聲明char型變量,對于char型變量饲宿,內(nèi)存分配給2個(gè)字節(jié)厦酬,占16位
例如:char ch=‘A’,home=‘家’,handsome=‘酷’;
轉(zhuǎn)意字符常量:
有些字符(如回車符)不能通過鍵盤輸入到字符串或程序中,就需要使用轉(zhuǎn)意字符常量,
例如:\n(換行), \b(退格),\t(水平制表),\‘(單引號), \“(雙引號),\\(反斜線)
等瘫想。
比較
Java語言中char采用16位Unicode標(biāo)準(zhǔn)字符集仗阅,最多可以識別65536個(gè)字符
C語言等的字符類型是采用ASCII編碼,每個(gè)數(shù)據(jù)占用8比特的長度国夜,總共可以表示256個(gè)不同的字符减噪。
(3)整數(shù)類型
int 型
- 變量:使用關(guān)鍵字int來聲明int型變量,聲明時(shí)也可以賦給初值.
例如:int x= 12,平均=9898,jiafei;
- 常量:int型常量共有三種表示方法:
十進(jìn)制:
123,6000
(十進(jìn)制)
八進(jìn)制:077
(八進(jìn)制车吹,是零開頭)
十六進(jìn)制:0x3ABC
(十六進(jìn)制)
對于int型變量筹裕,內(nèi)存分配給4個(gè)字節(jié)(byte),占32位.
byte 型
變量:使用關(guān)鍵字byte來聲明byte 型變量.
例如:byte x= -12, tom=28, 漂亮=98;
常量:一定范圍內(nèi)的int型常量賦值給byte型變量.
對于byte型內(nèi)存分配給1個(gè)字節(jié),占8位 .
short 型
- 變量:使用關(guān)鍵字short來聲明short型變量窄驹。
例如:short x=12,y=1234;
- 常量:和byte型類似朝卒,Java中也不存在short型常量的表示法,但可以把一定范圍內(nèi)的int型常量賦值給short型變量乐埠。
對于short型變量抗斤,內(nèi)存分配給2個(gè)字節(jié),占16位.
long 型
- 變量:使用關(guān)鍵字long來聲明long型變量丈咐。
- 常量:long型常量用后綴L來表示瑞眼,例如
108L(十進(jìn)制)、07123L(八進(jìn)制)棵逊、 0x3ABCL(十六進(jìn)制) 伤疙。 例如: long width=12L,height=2005L,length;
對于long型變量,內(nèi)存分配給8個(gè)字節(jié)辆影,占64位掩浙。
(4)浮點(diǎn)類型
- 一個(gè)浮點(diǎn)數(shù)包括以下幾個(gè)部分
-- 整數(shù)部分;小數(shù)點(diǎn) 秸歧;小數(shù)部分厨姚;指數(shù) (e or E)
-- 類型后綴 (f or F for float, d or D for double)
可以用小數(shù)點(diǎn)和科學(xué)計(jì)數(shù)法兩種形式表示
float型
常量:453.54F(小數(shù)表示法),2e40f(2乘10的40次方键菱,指數(shù)表示法).
變量:使用關(guān)鍵字float來聲明float型變量谬墙,
例如:float x=22.76f,tom=1234.987f,weight=1e-12F;
對于float型變量今布,內(nèi)存分配給4個(gè)字節(jié),占32位拭抬。精度:float變量在存儲(chǔ)時(shí)保留8位有效數(shù)字部默。
float 類型常量舉例:
1f 2.f .3f 0f 3.1f 4f 1.893e+2f
double 型
常量:238.539d,231.987(小數(shù)表示法)造虎,1e-90(1乘10的-90次方傅蹂,指數(shù)表示法).對于double常量,后綴有“d”或“D”算凿,但允許省略后綴.
變量:使用關(guān)鍵字double來聲明double型變量份蝴,
例如:double height=23.345,width=34.56D,length=1e12;
對于double型變量,內(nèi)存分配給8個(gè)字節(jié)氓轰,占64位 婚夫。
-精度:double變量在存儲(chǔ)double型數(shù)據(jù)時(shí)保留16位有效數(shù)字,實(shí)際精度取決于具體數(shù)值署鸡。double 類型文字量舉例:
1e1 2. .3 0.0 3.1 4 1e-9d 1e137
特別注意
默認(rèn)情況下案糙,一個(gè)具有小數(shù)部分的數(shù)據(jù)的缺省類型是double而不是float。所以float常量后面必須要有后綴“f”或“F”靴庆。
Java的數(shù)據(jù)類型與C語言的異同
基本數(shù)據(jù)類型是相近的时捌,其不同之處在于:
1)Java的各種數(shù)據(jù)類型占用固定的內(nèi)存長度,與具體的軟硬件平臺環(huán)境無關(guān)炉抒;(跨平臺特性)
C或C++語言:16位機(jī)中奢讨,short, int占用2字節(jié),long占用4字節(jié)端礼;32位機(jī)中禽笑,short占用2字節(jié)入录,int, long占用4字節(jié)
2)Java的每種數(shù)據(jù)類型都對應(yīng)一個(gè)缺省的數(shù)值蛤奥,使得這種數(shù)據(jù)類型的變量的取值總是確定的。
(安全穩(wěn)定性)
C或C++:變量在未賦值前其值是不確定的僚稿。
2.3 表達(dá)式與運(yùn)算符
表達(dá)式
表達(dá)式是由一系列常量凡桥、變量、運(yùn)算符蚀同、方法調(diào)用構(gòu)成的缅刽,用于計(jì)算、對變量賦值蠢络,以及作為程序控制的條件
運(yùn)算符
(1) 算術(shù)運(yùn)算符
+ , –, *, /, % (可用于浮點(diǎn)數(shù))
+ , –, ++ , --
(2)賦值運(yùn)算符
- 簡單賦值運(yùn)算符 =
- 復(fù)合賦值運(yùn)算符
*= /= %= += -= <<= >>= >>>= &= ^= |=
E1 op= E2 等效于 E1 = (T)((E1) op (E2)), 其中T 是 E1的類型 - 舉例
a=5 表達(dá)式的值為 5
a=b=c=d=3 表達(dá)式以及 a, b, c 的值都是3
a=3+(b=10) 表達(dá)式的值是13, a 是13, b是10
a=(b=14)/(c=7) 表達(dá)式的值是2, a是2, b是14, c是7
a=(b=4)+(c=6) 表達(dá)式的值是 10, a是10,b是4,c是6
a+=a-=aa 等效于 a=a+(a=a-aa)
(3)關(guān)系運(yùn)算符
- 關(guān)系表達(dá)式的類型永遠(yuǎn)是布爾類型(boolean).
- 算術(shù)比較運(yùn)算符 <, <=, >, >=
- 類型比較運(yùn)算符 instanceof
- 例如:
e instanceof Point //Point 是一個(gè)類
相等關(guān)系運(yùn)算符
數(shù)字相等運(yùn)算符 = = 衰猛, !=
布爾相等運(yùn)算符 = = , !=
引用相等運(yùn)算符 = = 刹孔, !=
(4) 邏輯運(yùn)算符
- “與”運(yùn)算 &&
如果兩個(gè)操作數(shù)的值都為true運(yùn)算結(jié)果為true; 否則啡省,結(jié)果為false. - “或”運(yùn)算 ||
如果兩個(gè)操作數(shù)的值都為false運(yùn)算結(jié)果為false;否則,結(jié)果true - “非”運(yùn)算符!
操作數(shù)的類型必須是布爾類型
如果操作數(shù)的結(jié)果為 false卦睹,則表達(dá)式的結(jié)果為 true 畦戒,如果操作數(shù)的結(jié)果為 true則表達(dá)式的結(jié)果為 false
(5)位運(yùn)算符
- 按位取反():對數(shù)據(jù)的二進(jìn)制位取反,即0變1结序,1變0障斋。如,00101010=11010101
- 按位與(&):兩個(gè)操作數(shù)相應(yīng)位都為1徐鹤,則該位結(jié)果為1垃环,否則為0。如凳干,00110111&01000110=0000110
- 按位或(|) :兩個(gè)操作數(shù)相應(yīng)位都為0晴裹,則該位結(jié)果為0,否則為1救赐。如涧团,00110111| 01000110=01110111
- 按位異或(^) :兩個(gè)操作數(shù)相應(yīng)位相同,則該位結(jié)果為0经磅,否則為1泌绣。如,00110101&00111010=00001111
- 左移運(yùn)算符(<<):將一個(gè)數(shù)的二進(jìn)制位全部左移若干位预厌,符號位保持不變阿迈,高位左移后舍棄,低位補(bǔ)0轧叽。在沒有溢出的情況下苗沧,左移n位相當(dāng)于乘以2n。
例如
a=00011100; a<<2=01110000
b=10011011; b<<2=11101100
- 右移運(yùn)算符(>>):
將一個(gè)數(shù)的二進(jìn)制位全部右移若干位炭晒,舍棄移出的低位待逞,最高位則移入原來高位的值(空位補(bǔ)符號位)。右移n位相當(dāng)于除以2n取商网严。
例如
a=00011100; a>>2=00000111
b=10011011; b>>2=11100110
- 無符號右移運(yùn)算符(>>>):將一個(gè)數(shù)的二進(jìn)制位無符號右移若干位识樱。舍棄移出的低位,最高位補(bǔ)0震束。
說明:
無符號右移運(yùn)算符>>> 只是對32位和64位的值有意義怜庸,在表達(dá)式中過小的值總是被自動(dòng)擴(kuò)大為int 型。這樣垢村,對第7位以0開始的byte 型的值進(jìn)行無符號移動(dòng)是不可能的割疾,因?yàn)樵趯?shí)際移動(dòng)運(yùn)算時(shí),是對擴(kuò)大后的32位值進(jìn)行操作嘉栓。
例如
b=10011011; b將擴(kuò)充至32位后(高24位為符號位1) 進(jìn)行移位宏榕,b>>>2=0011 1111 … 1110 0110 (…處表示16個(gè)1)
(6)條件運(yùn)算符 (表達(dá)式1驰凛?表達(dá)式2:表達(dá)式3)
- 三目運(yùn)算符
首先計(jì)算表達(dá)式1,如果表達(dá)式1的值為 true担扑,則選擇表達(dá)式2的值恰响;否則選擇表達(dá)式3的值
如,int a=6, b=8, max=0; max=a>b?a:b;
2.4類型轉(zhuǎn)換運(yùn)算
- 每個(gè)表達(dá)式都有類型
- 如果表達(dá)式的類型與程序上下文不符
-有時(shí)可能會(huì)導(dǎo)致編譯錯(cuò)誤
-有時(shí)語言會(huì)進(jìn)行隱含的類型轉(zhuǎn)換涌献。 -
類型轉(zhuǎn)換分為擴(kuò)展轉(zhuǎn)換和窄化轉(zhuǎn)換
Java中數(shù)據(jù)的基本類型(不包括邏輯類型)按精度從“低”到“高”排列:
byte short char int long float double
規(guī)則:
- 當(dāng)把級別低的變量的值賦給級別高的變量時(shí)胚宦,系統(tǒng)自動(dòng)完成數(shù)據(jù)類型的轉(zhuǎn)換。
例如:float x=100;
- 當(dāng)把級別高的變量的值賦給級別低的變量時(shí)燕垃,必須使用顯示類型轉(zhuǎn)換運(yùn)算枢劝。顯示轉(zhuǎn)換的格式:(類型名)要轉(zhuǎn)換的值;例如:
int x=(int)34.89;
- 當(dāng)把一個(gè)int型常量賦值給一個(gè)byte和short型變量時(shí),不可以超出這些變量的取值范圍卜壕,否則必須進(jìn)行類型轉(zhuǎn)換運(yùn)算您旁;
例如:byte b=128;(error) byte b=(byte)128(ok)
下面四種情況下可能發(fā)生類型轉(zhuǎn)換:
-
賦值轉(zhuǎn)換
將表達(dá)式類型轉(zhuǎn)換為被賦值的變量類型
如,double d=10*2+5;
-
方法調(diào)用轉(zhuǎn)換
適用于方法或構(gòu)造函數(shù)調(diào)用中的每一個(gè)參數(shù)
-
強(qiáng)制類型轉(zhuǎn)換
將一個(gè)表達(dá)式類型強(qiáng)制轉(zhuǎn)換為指定的類型
如轴捎, (double)6
-
字符串轉(zhuǎn)換
- 任何類型(包括null類型)都可以轉(zhuǎn)換為字符串類型
- 當(dāng)一個(gè)操作數(shù)是String類型鹤盒,即在“字符串+操作數(shù)”的情況下,操作數(shù)會(huì)被自動(dòng)轉(zhuǎn)換為字符串類型
2.5輸入侦副、輸出數(shù)據(jù)
2.5.1 輸出基本型數(shù)據(jù)
- java使用
System
類中的方法實(shí)現(xiàn)數(shù)據(jù)輸出
例如:System.out.println()
或System.out.print()
輸出串值侦锯,表達(dá)式的值。二者的區(qū)別是前者輸出數(shù)據(jù)后換行秦驯,后者不換行尺碰。
如:
System.out.println(m+"個(gè)數(shù)的和為"+sum);
System.out.println(":"+123+"大于"+122);
如果需要輸出的字符串的長度較長,可以將字符串分解成幾部分译隘,然后使用并置符號:“+”將它們首尾相接亲桥,
例如:
System.out.println("你好,"+
"很高興認(rèn)識你" );
- printf
JDK1.5新增了和C語言中printf函數(shù)類似的輸出數(shù)據(jù)的方法固耘,格式如下:
System.out.printf("格式控制部分"题篷,表達(dá)式1,表達(dá)式2玻驻,…表達(dá)式n)
格式控制部分由格式控制符號:%d悼凑、%c偿枕、%f璧瞬、%s和普通的字符組成,普通字符原樣輸出渐夸。格式符號用來輸出表達(dá)式的值嗤锉。
%d輸出int類型數(shù)據(jù)值;%c輸出char型數(shù)據(jù)墓塌;%f輸出浮點(diǎn)型數(shù)據(jù)瘟忱,小數(shù)部分最多保留6位奥额;%s輸出字符串?dāng)?shù)據(jù)。
輸出數(shù)據(jù)時(shí)也可以控制數(shù)據(jù)在命令行的位置访诱,例如:%md輸出的int型數(shù)據(jù)占m列垫挨;%m.nf輸出的浮點(diǎn)型數(shù)據(jù)占m列,小數(shù)點(diǎn)保留n位触菜。
例如:System.out.printf("%d,%f",12, 23.78);
2.5.2 輸入基本型數(shù)據(jù)
可以使用Scanner類創(chuàng)建一個(gè)對象:
Scanner reader=new Scanner(System.in);
其中:reader對象調(diào)用下列方法九榔,讀取用戶在命令行輸入的各種基本類型數(shù)據(jù):
nextBoolean()、 nextByte()涡相、 nextShort()哲泊、 nextInt() 、 nextLong()催蝗、nextFloat()切威、nextDouble()。
上述方法執(zhí)行時(shí)都會(huì)堵塞丙号,程序等待用戶在命令行輸入數(shù)據(jù)回車確認(rèn)先朦。