- 相關(guān)推薦
java基本語(yǔ)法復習知識點(diǎn)大全
java開(kāi)發(fā)除了環(huán)境的搭建之外,我們要學(xué)習的還有各種java基本語(yǔ)法,所以yjbys小編為大家匯總了java基本語(yǔ)法復習知識點(diǎn),希望同學(xué)們好好學(xué)習!
一:java中的語(yǔ)句規則:
java每行代碼以;結尾。
Java中的注釋有:
(1)// 注釋一行
以“//”開(kāi)始,終止于行尾,一般作單行注釋?zhuān)煞旁谡Z(yǔ)句的后面
(2)/*……*/ 一行或多行注釋
以“/*”開(kāi)始,最后以“*/”結束,中間可寫(xiě)多行。
(3)/**……*/
以“/**”開(kāi)始,最后以“*/”結束,中間可寫(xiě)多行。這種注釋主要是為支持JDK 工具javadoc而采用的。
Java中的合法標示符要符合一下規則:
1)要以大小寫(xiě)字母或者美元符號或者下劃線(xiàn)開(kāi)頭,不能以數字開(kāi)頭
2)標示符命名不能用關(guān)鍵字,關(guān)鍵字是java內部所用到的標示符,為了避免混淆,所以不能用。
3)類(lèi),變量,方法名命名盡量有一定規則,不要隨便命名,雖然系統不會(huì )報錯,但是為了項目開(kāi)發(fā)后期的維護,所以盡量起比較有意義的名字,并且命名要符合一定的規則,如駝峰規則。
二:java基本數據類(lèi)型
Java數據類(lèi)型被分為:基本數據類(lèi)型和引用數據類(lèi)型。
Java中有8中基本數據類(lèi)型:
類(lèi)型 位長(cháng)/b 默認值 取值范圍
布爾型 (boolean) 1 false true false
字節型(byte ) 8 0 -128~127
字符型 (char) 16 ‘\u0000’ ‘\u0000’~’\uffff’即0~65535
短整型(short) 16 0 -32768~32767
整型(int) 32 0 -231~231-1
長(cháng)整型(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
注:String類(lèi)型不是基本數據類(lèi)型,它被定義為類(lèi),屬于引用數據類(lèi)型。,由于字符串是常用的數據類(lèi)型。Java提供了對String類(lèi)型特殊操作,直接引用,例如:String s="hello world";
三:引用類(lèi)型
引用類(lèi)型是一個(gè)對象類(lèi)型的,它的值是指向內存空間的引用,就是地址,所指向的內存中保存著(zhù)變量所表示的一個(gè)值或一組值。很好理解吧,因為一個(gè)對象,比如說(shuō)一個(gè)人,不可能是個(gè)數字也不可能是個(gè)字符啊,所以要想找它的話(huà)只能找它的地址了。
接下來(lái)看看基本類(lèi)型和引用類(lèi)型變量的不同處理吧;绢(lèi)型自然是簡(jiǎn)單,聲明是自然系統就給它空間了。例如,
int baijq;
baijq=250; //聲明變量baijq的同時(shí),系統給baijq分配了空間。
引用類(lèi)型就不是了,只給變量分配了引用空間,數據空間沒(méi)有分配,因為誰(shuí)都不知道數據是什么啊,整數,字符?我們看一個(gè)錯誤的例子:
MyDate today;
today.day = 4; //發(fā)生錯誤,因為today對象的數據空間未分配。
那我們怎么給它賦值啊?引用類(lèi)型變量在聲明后必須通過(guò)實(shí)例化開(kāi)辟數據空間,才能對變量所指向的對象進(jìn)行訪(fǎng)問(wèn)。舉個(gè)例子:
MyDate today; //將變量分配一個(gè)保存引用的空間
today = new MyDate(); //這句話(huà)是2步,首先執行new MyDate(),給today變量開(kāi)辟數據空間,然后再執行賦值操作。
四:定義變/常量和變量的初始化
Java定義變量結構:類(lèi)型 變量名,這里的變量名要符合標示符規則
1.變量的聲明
格式:類(lèi)型 變量名[,變量名]=初值,… ;
賦值:[類(lèi)型] 變量名=值
如:int a=5 , b=6 , c , d ;
說(shuō)明:
(1)變量名必須在作用域中是唯一的,不同作用域中才允許相同名字的變量出現;
(2)只要在同一代碼塊沒(méi)有同名的變量名,可以在程序中任何地方定義變量,一個(gè)代碼塊就是兩個(gè)相對的“{ }”之間部分。
2.變量的使用范圍
每個(gè)變量的使用范圍只在定義它的代碼塊中,包括這個(gè)代碼塊中包含的代碼塊。
在類(lèi)開(kāi)始處聲明的變量是成員變量,作用范圍在整個(gè)類(lèi);
在方法和塊中聲明的變量是局部變量,作用范圍到它的“}”;
3.變量類(lèi)型的轉換
Java 可以將低精度的數字賦值給高精度的數字型變量,反之則需要強制類(lèi)型轉換。
強制轉換格式:(數據類(lèi)型)數據表達式
字節型 短整型 字符型 整型 長(cháng)整型 單精度實(shí)型 雙精度實(shí)型
轉化規律:由低到高
變量與存儲器有著(zhù)直接關(guān)系,定義一個(gè)變量就是要編譯器分配所需要的內存空間,分配多少空間,這就是根據我們所定義的變量類(lèi)型所決定的。變量名實(shí)際上是代表所分配空間的內存首地址
4. 常量
Java中的常量值是用文字串表示的,它區分為不同的類(lèi)型,如整型常量123,實(shí)型常1.23,
字符常量‘a’,布爾常量true、false以及字符串常量“This is a constant string”。
Java 的常量用final 說(shuō)明,約定常量名一般全部使用大寫(xiě)字母,如果是多個(gè)單詞組合在一起的,單詞之間用下劃線(xiàn)連接,常量在程序執行時(shí)不可更改。
如:final int i=1;
i=i+1; //錯,i 是final(常量),不可更改值
例如:final double IP = 3.14159 D
說(shuō)明:默認類(lèi)型為64 位double 雙精度類(lèi)型(D 或d),數字后面加F 或f 則是32 位float 單
精度(實(shí)數)類(lèi)型
五:運算符
1、賦值運算符
賦值運算符用于把一個(gè)數賦予一個(gè)變量。賦值運算符兩邊的類(lèi)型不一致時(shí),那么如果左側的數據類(lèi)型的級別高,則右邊的數據將轉換成左邊的數據類(lèi)型在賦予左邊的變量,否則需要強制類(lèi)型轉換。
賦值運算符包括= 、+=、-=、*=、%=、/=等。
2、算術(shù)運算符
算數運算符用于對整型數或者浮點(diǎn)數進(jìn)行運算,java語(yǔ)言中的算術(shù)運算符包括二元運算符和一元運算符。所謂的幾元運算符即參加運算的操作數的個(gè)數。
1) 二元運算符
Java的二元運算符有+(加)、-(減)、*(乘)、/(除)、%(取余數)。
2) 一元運算符
Java的一元運算符有++(自加)、--(自減)
3、關(guān)系運算符
關(guān)系運算符用來(lái)比較兩個(gè)值,返回布爾類(lèi)型的值true或false。
等于 不等于 小于 小于等于 大于等于 大于
== != < <= >= >
4、條件運算符
條件運算符的作用是根據表達式的真假決定變量的值。
1> 格式:條件表達式 ? 表達式2 :表達式3
2> 功能:條件表達式為true,取“表達式2”值,為false,取“表達式3”的值
例: int a=0x10 , b=010 , max ;
max=a>b ? a : b ;
System.out.println(max) ; // 輸出16
5、 邏輯運算符
運算符 結果
~ 按位非(NOT)(一元運算)
& 按位與(AND)
| 按位或(OR)
^ 按位異或(XOR)
>> 右移
>>> 右移,左邊空出的位以0填充 ;無(wú)符號右移
<< 左移
&= 按位與賦值
|= 按位或賦值
^= 按位異或賦值
>>= 右移賦值
>>>= 右移賦值,左邊空出的位以0填充 ;無(wú)符號左移
<<= 左移賦值
按位非(NOT)
按位非也叫做補,一元運算符NOT“~”是對其運算數的每一位取反。例如,數字42,它的二進(jìn)制代碼為: 00101010
經(jīng)過(guò)按位非運算成為 11010101
六:流程控制語(yǔ)句
·分支語(yǔ)句
1.簡(jiǎn)單的if.....else語(yǔ)句
If(條件){
如果條件為真、、、、
}
Else{
如果條件為假、、、、、、
}
2、只有if的語(yǔ)句:
If(條件){
如果條件為真,執行。。。如果為假,不執行
}
3、switch語(yǔ)句是多分枝語(yǔ)句,基本語(yǔ)法:
Switch(expr){
Case value1:
Statements;
Break;
........
Case valueN:
Statements;
Break;
Default:
Statements;
Break;
}
注:
expr必須是與int類(lèi)型兼容的類(lèi)型,即為byte,short,char和int類(lèi)型中的其中一種
Case valueN:中valueN也必須是int類(lèi)型兼容的類(lèi)型,并且必須是常量
各個(gè)case子句的valueN表達式的值不同
Switch語(yǔ)句中只能有一個(gè)default子句。
·循環(huán)語(yǔ)句
1.while語(yǔ)句
2.do......while語(yǔ)句(此處省略三百字)
3.for語(yǔ)句
基本格式:for(初始化;循環(huán)條件;迭代部分)
功能:
(1)第一次進(jìn)入for 循環(huán)時(shí),對循環(huán)控制變量賦初值;
(2) 根據判斷條件檢查是否要繼續執行循環(huán)。為真執行循環(huán)體內語(yǔ)句塊,為假則結束循環(huán);
(3)執行完循環(huán)體內語(yǔ)句后,系統根據“循環(huán)控制變量增減方式”改變控制變量值,再回
(3) 到步驟(2)根據判斷條件檢查是否要繼續執行循環(huán)。
4.流程跳轉語(yǔ)句:break,continue和return語(yǔ)句用來(lái)控制流程的跳轉
1)break:從switch語(yǔ)句,循環(huán)語(yǔ)句或標號標識的代碼塊中退出
2)continue:跳出本次循環(huán),執行下次循環(huán),或執行標號標識的循環(huán)體;
3)return:退出本方法,跳到上層調用方法。
4)Break語(yǔ)句和continue語(yǔ)句可以與標號聯(lián)合使用。標號用來(lái)標識程序中的語(yǔ)句,標號的名字可以是任意的合法標識符。
帶有標號的循環(huán)體:
Loop:switch(expr){
}
}
七:字符串
字符串的幾種用法:
拼接 直接用“+”把兩個(gè)字符串拼接起來(lái)
例如:String firstName = “li”;
String secondName = “ming”;
String fullName = firstName+secondName;
檢測字符串是否相等 檢測兩個(gè)字符串內容是否相等時(shí)使用“equals”;比較兩個(gè)字符串的引用是否相等時(shí)用“==”
得到字符串的長(cháng)度 字符串變量名.length();
String,StringBuffer,StringBuild區別
String 字符串常量
StringBuffer 字符串變量(線(xiàn)程安全)
StringBuilder 字符串變量(非線(xiàn)程安全)
簡(jiǎn)要的說(shuō), String 類(lèi)型和 StringBuffer 類(lèi)型的主要性能區別其實(shí)在于 String 是不可變的對象, 因此在每次對 String 類(lèi)型進(jìn)行改變的時(shí)候其實(shí)都等同于生成了一個(gè)新的 String 對象,然后將指針指向新的 String 對象,所以經(jīng)常改變內容的字符串最好不要用 String ,因為每次生成對象都會(huì )對系統性能產(chǎn)生影響,特別當內存中無(wú)引用對象多了以后, JVM 的 GC 就會(huì )開(kāi)始工作,那速度是一定會(huì )相當慢的。
而如果是使用 StringBuffer 類(lèi)則結果就不一樣了,每次結果都會(huì )對 StringBuffer 對象本身進(jìn)行操作,而不是生成新的對象,再改變對象引用。所以在一般情況下我們推薦使用 StringBuffer ,特別是字符串對象經(jīng)常改變的情況下。而在某些特別情況下, String 對象的字符串拼接其實(shí)是被 JVM 解釋成了 StringBuffer 對象的拼接,所以這些時(shí)候 String 對象的速度并不會(huì )比 StringBuffer 對象慢,而特別是以下的字符串對象生成中, String 效率是遠要比 StringBuffer 快的:
String S1 = “This is only a” + “ simple” + “ test”;
StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);
你會(huì )很驚訝的發(fā)現,生成 String S1 對象的速度簡(jiǎn)直太快了,而這個(gè)時(shí)候 StringBuffer 居然速度上根本一點(diǎn)都不占優(yōu)勢。其實(shí)這是 JVM 的一個(gè)把戲,在 JVM 眼里,這個(gè)
String S1 = “This is only a” + “ simple” + “test”; 其實(shí)就是:
String S1 = “This is only a simple test”; 所以當然不需要太多的時(shí)間了。但大家這里要注意的是,如果你的字符串是來(lái)自另外的 String 對象的話(huà),速度就沒(méi)那么快了,譬如:
String S2 = “This is only a”;
String S3 = “ simple”;
String S4 = “ test”;
String S1 = S2 +S3 + S4;
這時(shí)候 JVM 會(huì )規規矩矩的按照原來(lái)的方式去做
在大部分情況下 StringBuffer > String
StringBuffer
Java.lang.StringBuffer線(xiàn)程安全的可變字符序列。一個(gè)類(lèi)似于 String 的字符串緩沖區,但不能修改。雖然在任意時(shí)間點(diǎn)上它都包含某種特定的字符序列,但通過(guò)某些方法調用可以改變該序列的長(cháng)度和內容。
可將字符串緩沖區安全地用于多個(gè)線(xiàn)程?梢栽诒匾獣r(shí)對這些方法進(jìn)行同步,因此任意特定實(shí)例上的所有操作就好像是以串行順序發(fā)生的,該順序與所涉及的每個(gè)線(xiàn)程進(jìn)行的方法調用順序一致。
StringBuffer 上的主要操作是 append 和 insert 方法,可重載這些方法,以接受任意類(lèi)型的數據。每個(gè)方法都能有效地將給定的數據轉換成字符串,然后將該字符串的字符追加或插入到字符串緩沖區中。 append 方法始終將這些字符添加到緩沖區的末端;而 insert 方法則在指定的點(diǎn)添加字符。
例如,如果 z 引用一個(gè)當前內容是“start”的字符串緩沖區對象,則此方法調用 z.append("le") 會(huì )使字符串緩沖區包含“startle”,而 z.insert(4, "le") 將更改字符串緩沖區,使之包含“starlet”。
在大部分情況下 StringBuilder > StringBufferjava.lang.StringBuilder
java.lang.StringBuilder 一個(gè)可變的字符序列是5.0新增的。此類(lèi)提供一個(gè)與 StringBuffer 兼容的 API,但不保證同步。該類(lèi)被設計用作 StringBuffer 的一個(gè)簡(jiǎn)易替換,用在字符串緩沖區被單個(gè)線(xiàn)程使用的時(shí)候(這種情況很普遍)。如果可能,建議優(yōu)先采用該類(lèi),因為在大多數實(shí)現中,它比 StringBuffer 要快。兩者的方法基本相同。
八、數組
數組是有序數據的集合,數組中的每個(gè)元素具有相同的數組名,根據數組名和下標來(lái)唯一確定數組中的元素。使用時(shí)要先聲明后創(chuàng )建
1、一維數組
1) 一維數組的聲明
格式: 數據類(lèi)型 數組名[ ] 或 數據類(lèi)型 [ ]數組名
例: int a[] ; String s[] ; char []c ;
說(shuō)明:定義數組,并不為數據元素分配內存,因此“[ ]”中不用指出數組中元素個(gè)數。
2 )一維數組的創(chuàng )建與賦值
創(chuàng )建數組并不是定義數組,而是在數組定義后,為數組分配存儲空間,同時(shí)對數組元素進(jìn)行初始化
(1)用運算符new 分配內存再賦值
格式:數組名=new 數據類(lèi)型[size]
例:int a[] ;
a=new int[3] ; // 產(chǎn)生a[0] , a[1] , a[2] 三個(gè)元素
a[0]=8 ; a[1]=8 ; a[2]=8 ;
3)直接賦初值并定義數組的大小
例:int i[]={4,5,010,7,3,2,9} ;
String names[]={“張三”,”李四”,”王五”,”宋七”} ;
4)測試數組長(cháng)度(補充)
格式:數組名.length
char c[]={‘a’,’b’,’c’,’北’,’京’} ;
System.out.print(c.length) ; // 輸出5
2、多維數組
以二維數組為例
例:int d[][] ; // 定義一個(gè)二維數組
d=new int[3][4] ; // 分配3 行4 列數組內存
int a[][]=new int[2][] ;
a[0]=new int[3] ; // 第二維第一個(gè)元素指向3 個(gè)整型數
a[1]=new int[5] ; // 第二維第一個(gè)元素指向5 個(gè)整型數
注意:Java 可以第二維不等長(cháng)
int i[][]={{0},{1,4,5},{75,6},{8,50,4,7}} ; //定義和賦初值在一起
下面數組定義正吳的判斷
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] //對
注意:java中二維數組分配空間是第二維可以為空,但是第一維必須分配內存。
最后以一個(gè)經(jīng)典的helloworld代碼結束本章的總結
public class HelloWorldApp{
public static void main(String[] args){
System.out.println(“hello world!”);
}
}
【java基本語(yǔ)法復習知識點(diǎn)】相關(guān)文章:
英語(yǔ)基本語(yǔ)法易錯知識點(diǎn)08-19
小升初英語(yǔ)語(yǔ)法強調句的復習知識點(diǎn)02-12
Java基本編程技巧07-13
日語(yǔ)基本語(yǔ)法句型06-20
PETS基本語(yǔ)法解析08-12
Java代碼的基本知識10-26
Java知識點(diǎn)歸納08-16
德語(yǔ)基本語(yǔ)法知識講解07-14
雅思的基本語(yǔ)法概念—詞性10-16