2.1 Java語言的基本元素
2.1.1 標識符
標識符規(guī)則:必須以字母、下劃線、“$”或漢字開頭,后面的字符可以是字母、數(shù)字、下劃線、“$”和漢字的一串字符
說明:(1)不能是Java保留的關鍵字;
?。?)常量名一般以大寫字母,變量名用小寫字母,類名以大寫字母開始;
?。?)區(qū)分大小寫,如ad、Ad、aD、Da是四個不同的標識名。
2.1.2 關鍵字
P20 表2.2
2.1.3 分隔符
1.注釋符
?。?)// 注釋一行
以“//”開始,終止于行尾,一般作單行注釋,可放在語句的后面
?。?)/ *……*/ 一行或多行注釋
以“/ *”開始,最后以“*/”結(jié)束,中間可寫多行。
(3)/ **……*/
以“/ **”開始,最后以“*/”結(jié)束,中間可寫多行。這種注釋主要是為支持JDK工具javadoc而采用的。
2.空白符
如空格、回車、換行和制表符(Tab鍵)。系統(tǒng)編譯程序時,只用空白符區(qū)分各種基本成分,然后忽略它。
3.普通分隔符
?。?)“.”點號:用于分隔包、類或分隔引用變量中的變量和方法
?。?)“;”分號:Java語句結(jié)束的標志;
?。?)“:”冒號:說明語標號;
?。?)“{ }”大括號:用來定義復合語句、方法體、類體及數(shù)組的初始化;
?。?)“[ ]”方括號:用來定義數(shù)組類型及引用數(shù)字的元素值;
(6)“( )”圓括號:用于在方法定義和訪問中將參數(shù)表括起來,或定義運算的先后次序。
2.2 數(shù)據(jù)類型
Java要求在程序中使用任何變量之前必須先聲明其類型。
Java的數(shù)據(jù)類型分為:
* 基本類型:整型、浮點型、布爾型、字符型
* 數(shù)組類型:一維數(shù)組和多維數(shù)組
* 復合類型:類、接口
2.2.1 基本數(shù)據(jù)類型
表2.3 Java基本數(shù)據(jù)類型
說明
類型
位長/b
默認值
取值范圍
布爾型
boolean
1
false
true , false
字節(jié)型
byte
8
0
-128~127
字符型
char
16
‘\u0000’
‘\u0000’~’\uffff’即0~65535
短整型
short
16
0
-32768~32767
整型
int
32
0
-231~231-1
長整型
long
64
0
-263~263-1
浮點型
(單精度)
float
32
0.0
+-1.4E-45或+-3.4028235E+38
雙精度
double
64
0.0
+-4.9E-324 或
+-1.797693134862315E+308
說明:
(1)一般情況下,沒小數(shù)點的數(shù)字是int型,有小數(shù)點的數(shù)是double型;
?。?)String(字符串)型,如:“合肥”、“I am student” ;
?。?)Java的char類型采用UniCode(國際編碼標準)的新字符處理方式,即大字符編碼方案,漢字和字母均看作是一個字符,占兩個字節(jié);
(4)Java程序是定義的變量若沒有賦初值,Java取默認值。
C++基本數(shù)據(jù)類型有:整型(int)、字符型(char)、浮點型(float,double)、常量型
類型名
長度(字節(jié))
取值范圍
Char(signed char)
1
-128~127
Unsigned char
1
0~255
Short(short int)
2
-32768~32767
Unsigned short
2
0~65535
int(signed int)
2
-32768~32767
Unsigned int
2
0~65535
Long(signed long)
4
-2147483648~2147483647
Unsigned long
4
0~4294967295
Float
4
+-3.4*10e-38 ~ +-3.4*10e38
Double
8
+-1.7*10e-308~ +-1.7*10e308
Long double
8
+-1.7*10e-308~ +-1.7*10e308
2.2.2 直接量與常量
直接量(literal)是指在程序中直接給出的一個符號串,即其它語言稱為的常量。
Java的常量用final說明,約定常量標識符一般全部使用大寫字母,常量在程序執(zhí)行時不可更改。
如:final int i=1;
i=i+1; //錯,i是final(常量),不可更改值
1.布爾型常量
true 、 false
注意:Java中的布爾型常量不能與0、-1、1等數(shù)字
例:
boolean A,b,C;
A=false;
b=true;
C=1; //錯
boolean D=True; //錯,“True” 首字大寫
2.整型常量
例: 45 , 045 ,0x45 , 45L
int a=10 ; // 十進制
int b=020 ; // 八進制 以“0”(零)開頭
int c=0x3A ; // 十六進制 以“0x”開頭
int d=71 , Y=91 ; // 對
int M=0xd1 , N=091 ; // 錯 “091”是八進制,不能有9
說明:整型常量默認為32位int型,若在數(shù)值后加L或l,則表示為64位長整型
3.浮點型常量
例: 3.45 , 4.512E12 4.5F 4.5D
說明:(1)默認類型為64位double雙精度類型(D或d),數(shù)字后面加F或f則是32位float單精度(實數(shù))類型
(2)double類型值有效空間大,但運行慢,結(jié)果精度不高
float a , b ; double x , y , z ;
a=7.4 ; //錯, 7.4默認是double型,不能賦予精度低的float型
b=7.4F ;
x=7.4E5;
y=7.4E5D ;
z=7.4E5F; //對
4.字符常量
字符常量是由單引號括起來的單個字符,它可以是UniCode字符集中的任意一個字符。如 ‘A’ ‘#’ ‘宋’ ‘6’
轉(zhuǎn)義符號見P23 表2.4
5.字符串常量
用一對雙引號起來的字符序列。
例: “ABCD” “學習Java”
public class SC{
public static void main(String arg[]){
String a="我是安徽\n合肥人"; // “\n” 表示換行
String b='%' ; //錯 ‘%’是字符型,不能賦予String型
System.out.println(A); //錯 A改為a
} }
2.2.3 變量
Java通常用小寫字母或單詞作為變量名。
變量具有名字、類型、值三元素
1.變量的聲明
格式:類型 變量名[,變量名]=初值,… ;
賦值:[類型] 變量名=值
如:int a=5 , b=6 , c , d ;
String s=”合肥” ;
float m , n ;
m=6.78f ;
說明:
?。?)變量名必須在作用域中是唯一的,不同作用域中才允許相同名字的變量出現(xiàn);
(2)只要在同一代碼塊沒有同名的變量名,可以在程序中任何地方定義變量,一個代碼塊就是兩個相對的“{ }”之間部分。
2.變量的使用范圍
每個變量的使用范圍只在定義它的代碼塊中,包括這個代碼塊中包含的代碼塊。
在類開始處聲明的變量是成員變量,作用范圍在整個類;
在方法和塊中聲明的變量是局部變量,作用范圍到它的“}”;
見P25 例2.4:
例:public class SC{
int i=0;
public static void main(String arg[]){
int i=1;
System.out.println(i); } } // 輸入 1
3.變量類型的轉(zhuǎn)換
Java可以將低精度的數(shù)字賦值給高精度的數(shù)字型變量,反之則需要強制類型轉(zhuǎn)換。
強制轉(zhuǎn)換格式:(數(shù)據(jù)類型)數(shù)據(jù)表達式
如:int i;
float f=(float)34.6; // 34.6默認是雙精度,float f=34.6F也對
i=(int)f;
System.out.println(f); // 輸出34.6
System.out.println(i); // 輸出34
byte short char int long float double
字節(jié)型 短整型 字符型 整型 長整型 單精度實型 雙精度實型
低 高
2.3 運算符與表達式(與C、C++相同)
2.3.1 賦值運算符
簡略形式
非簡略形式
i+=j
i=i+j
i-=j
i=i-j
i*=j
i=i*j
i/=j
i=i/j
I%=j
i=i%j
例:a=b=c=0 ; 相當于c=0 , b=c , a=b ;
例: int k=10; double x=10, y=20 ;
k/=4 ; // 2
x+=10; // 20
y*=y; // 400
例: int i=10 , j=3 ;
i*=j+2 // 50
2.3.2 算術運算符
見P28 表2.7
例 int i=1;
System.out.println(i++); // 輸出 1
System.out.println(++i); // 輸出 3
2.3.3 關系運算符
等于
不等于
小于
小于等于
大于等于
大于
==
!=
<
<=
>=
>
如:public class SC{
public static void main(String arg[])
{ boolean x , y ;
int i=5 , j=2 ;
x=(i-4)= =(j-1) ;
int a=1 ; double b=1.0 ;
y=a= =b;
int m=65 ; char n='A' ;
System.out.println(x) ; // 輸出true
System.out.println(y) ; // 輸出true
System.out.println(m= =n) ; // 輸出true
}}
2.3.4 條件運算符
格式:條件表達式 ? 表達式2 :表達式3
功能:條件表達式為true,取“表達式2”值,為false,取“表達式3”的值
例: int a=0x10 , b=010 , max ;
max=a>b ? a : b ;
System.out.println(max) ; // 輸出16
2.3.5 邏輯運算符
見P29 表2.9
2.3.6 位運算符(不做要求)
2.3.7 其他運算符
見P32 表2.11
instanceof : 對象運算符,用于測試一個對象是否是一個指定類的實例
例:有一個稱為shape的類,shape的子類是polygonShape,如果有一個存儲shape的變量實例shapeHolder,如何知道它是否是一個polygonShape呢?下述代碼段會幫助解決這個問題:
shape shapeHolder ;
if (shapeHolder instanceof polygonShape)
{ polygonShape polygon=( polygonShape) shapeHolder ;
…………
………… }
當處理保存某一公用父類的子類對象的數(shù)據(jù)結(jié)構(gòu)時,會經(jīng)常遇到上面提及的情況。假設我們有一個基于畫圖程序的對象,并且存儲了用戶繪制的所有形狀,若要打印這些數(shù)據(jù),就要有一個循環(huán)遍歷這些數(shù)據(jù)結(jié)構(gòu)并打印每一形狀,如果一種特殊的形狀需要特殊的指令進行打印,就需要使用instanceof運算符。
new : 對象實例化運算符,實例化一個對象,即為對象分配內(nèi)存
+ : 字符串合并運算符,
表:字符串創(chuàng)建規(guī)則
操作數(shù)
規(guī) 則
Null變量
取值為空(null)會產(chǎn)生null字符串
整數(shù)
整數(shù)會被轉(zhuǎn)換成十進制,表示字符串,如是是負數(shù),前面會加上“-”號。
浮點數(shù)
被轉(zhuǎn)換為緊縮格式的字符串,如果長度超過10個字符,會以指數(shù)形式表示。
字符
被轉(zhuǎn)換為長度為1的包含相同字符的字符串
布爾值
轉(zhuǎn)換成“true”或“false”
對象
對象的方法toString( )會被調(diào)用
例:String a="Hi" , b="你好" ;
int i=42 ;
float j=42.0f ;
boolean f=i==j ;
double d=489.47 ;
System.out.println(a+b) ; // 輸出Hi你好
a=a+f ;
System.out.println(a); // 輸出Hitrue
System.out.println(b+d); // 輸出你好489.47
2.3.8 運算優(yōu)先級
見P32 表2.12
例: int a=3 , b=6 , k ;
k=a+=b-=2 ; // 先計算b-=2, 得4,再計算a+=4
System.out.println(k) ; // 輸出 7
2.4 數(shù)組
數(shù)組是有序數(shù)據(jù)的集合,數(shù)組中的每個元素具有相同的數(shù)組名,根據(jù)數(shù)組名和下標來唯一確定數(shù)組中的元素。使用時要先聲明后創(chuàng)建
2.4.1 一維數(shù)組的聲明
格式: 數(shù)據(jù)類型 數(shù)組名[ ] 或 數(shù)據(jù)類型 [ ]數(shù)組名
例: int a[] ; String s[] ; char []c ;
說明:定義數(shù)組,并不為數(shù)據(jù)元素分配內(nèi)存,因此“[ ]”中不用指出數(shù)組中元素個數(shù)。
2.4.2 一維數(shù)組的創(chuàng)建與賦值
創(chuàng)建數(shù)組并不是定義數(shù)組,而是在數(shù)組定義后,為數(shù)組分配存儲空間,同時對數(shù)組元素進行初始化
1.用運算符new分配內(nèi)存再賦值
格式:數(shù)組名=new 數(shù)據(jù)類型[size]
例:int a[] ; String s[] ; char []c ;
a=new int[3] ; // 產(chǎn)生a[0] , a[1] , a[2] 三個元素
s=new String[2] ; c=new char[5] ;
a[0]=8 ; a[1]=8 ; a[2]=8 ;
s[1]=”網(wǎng)絡” ;
int intArr[]=new int[3] ; // 聲明和分配內(nèi)存并在一起
char chArr[]=new char[6] ; // 聲明和分配內(nèi)存并在一起
System.out.println(a[0]+a[1]) ;
2.直接賦初值并定義數(shù)組的大小
例:int i[]={4,5,010,7,3,2,9} ;
String names[]={“張三”,”李四”,”王五”,”宋七”} ;
char c[]={‘a(chǎn)’,’b’,’c’,’北’,’京’} ;
3.測試數(shù)組長度(補充)
格式:數(shù)組名.length
char c[]={‘a(chǎn)’,’b’,’c’,’北’,’京’} ;
System.out.print(c.length) ; // 輸出5
2.4.3 多維數(shù)組
以二維數(shù)組為例
例:int d[][] ; // 定義一個二維數(shù)組
d=new int[3][4] ; // 分配3行4列數(shù)組內(nèi)存
char c[][]=new char[2][3] ; // 定義和分配在一起
int a[][]=new int[2][] ;
a[0]=new int[3] ; // 第二維第一個元素指向3個整型數(shù)
a[1]=new int[5] ; // 第二維第一個元素指向5個整型數(shù)
// Java可以第二維不等長
int i[][]={{0},{1,4,5},{75,6},{8,50,4,7}} ; //定義和賦初值在一起
System.out.println(i[2][1]) ; // 輸出6
System.out.println(i[1][2]) ; // 輸出5
System.out.print(i.length) ; // 輸出4
System.out.print(i[1].length); // 輸出3
例: 下面數(shù)組定義哪些是正確的
int a[][]=new int[10,10] //錯
int a[10][10]=new int[][] //錯
int a[][]=new int[10][10] //錯
int []a[]=new int[10][10] //對
int [][]a=new int[10][10] //對