Java基础语法 第2节 Java语言基本语法
一、標(biāo)識(shí)符和關(guān)鍵字
1.標(biāo)識(shí)符
2.關(guān)鍵字:被Java語(yǔ)言賦予了特殊含義,用作專門(mén)用途的字符串(單詞),關(guān)鍵字中所有字母都為小寫(xiě)
3.Java中的名稱命名規(guī)范
? ? ? ? ? ?1)包名:多單詞組成時(shí),所有字母都小寫(xiě):xxxyyyzzz
? ? ? ? ? ?2)類名接口名:多單詞組成時(shí),所有單詞的首字母大寫(xiě):XxxYyyZzz
? ? ? ? ? ?3)變量名和函數(shù)名:多單詞組成時(shí),第一個(gè)單詞首字母小寫(xiě),第二個(gè)單詞開(kāi)始每個(gè)單詞首字母大寫(xiě):xxxYyyZzz
? ? ? ? ? ?4)常量名:所有字母都大寫(xiě)。多單詞時(shí)每個(gè)單詞用下劃線連接:XXX_YYY_ZZZ
二、注釋和標(biāo)簽
? ? ? ? ? *文檔注釋(以@為前綴)
? ? ? ? ? */
三、變量和數(shù)據(jù)類型
1.進(jìn)制數(shù)
| 十進(jìn)制(D) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 二進(jìn)制(B) | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| 八進(jìn)制(O) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 十六進(jìn)制(H) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
注:八進(jìn)制必須以0開(kāi)頭,例:0123;十六進(jìn)制必須以0X開(kāi)頭,例:0X25
2.各進(jìn)制數(shù)轉(zhuǎn)換
1)其他類型---->十進(jìn)制:各位數(shù)字分別乘以各自基數(shù)(二進(jìn)制:2,八進(jìn)制:8,十六進(jìn)制:16)的(N-1)次方,并相加求和,其中N是數(shù)字位數(shù)(按權(quán)相加法)
例如:(1001)2=(9)10:1×23+0×22+0×21+1×20=9;(11)8=(9)10:1×81+1×80=9;(25)16=(37)10:2×161+5×160=37;
2)十進(jìn)制--->其他類型:整數(shù)部分(除基取余法↑),小數(shù)部分(乘基取余法↓),再拼接
3)二進(jìn)制---->八進(jìn)制:←整數(shù)部分.小數(shù)部分→,即整數(shù)部分向左每三位轉(zhuǎn)換成二進(jìn)制數(shù),位數(shù)不夠則補(bǔ)0;小數(shù)部分向右每三位轉(zhuǎn)換成二進(jìn)制數(shù),位數(shù)不夠則補(bǔ)0
4)八進(jìn)制---->二進(jìn)制:與二進(jìn)制-轉(zhuǎn)八進(jìn)制相反
5)二進(jìn)制----->十六進(jìn)制:←整數(shù)部分.小數(shù)部分→,即整數(shù)部分向左每四位轉(zhuǎn)換成二進(jìn)制數(shù),位數(shù)不夠則補(bǔ)0;小數(shù)部分向右每四位轉(zhuǎn)換成二進(jìn)制數(shù),位數(shù)不夠則補(bǔ)0
6)十六進(jìn)制----->二進(jìn)制:與二進(jìn)制轉(zhuǎn)十六進(jìn)制相反
7)八進(jìn)制<----->十六進(jìn)制:八進(jìn)制<--->二進(jìn)制<------>十六進(jìn)制
? ? ? ? ? ??
?
3.數(shù)據(jù)類型:
3. 默認(rèn)值:數(shù)值變量:0;字符變量:‘\0’;布爾變量:false;引用數(shù)據(jù)類型:null;'\n':換行;'\t':Tab鍵;'\r':回車
4. 不同數(shù)據(jù)類型之間的轉(zhuǎn)換(自動(dòng)轉(zhuǎn)換:如下圖;強(qiáng)制轉(zhuǎn)換:int a = (int)45.3)
? ? ? ? 注:對(duì)于32位的浮點(diǎn)數(shù),最高的1位是符號(hào)位s,接著的8位是指數(shù)E,剩下的23位為有效數(shù)字M。如下圖,底數(shù)2,0或1表示正或負(fù)
?
5.變量:
1)常量:程序執(zhí)行過(guò)程中值不能被改變的量,通常用大寫(xiě)字母表示
2)變量:程序執(zhí)行過(guò)程中值能被改變的量
3)定義變量:[訪問(wèn)修飾符]變量類型? ?變量名 [= 初始值],final 數(shù)據(jù)類型? 常量名稱 [=初始值]
4)當(dāng)定義的final變量屬于成員變量時(shí),必須定義時(shí)賦初始值
5)變量的有效范圍:
?成員變量:類體中定義,整個(gè)類中有效
實(shí)例變量:int x = 5;
靜態(tài)變量(類變量):有效范圍內(nèi)可以”跨類“,甚至達(dá)到整個(gè)程序之內(nèi)。使用方法:1.本類中直接存取;2.其他類中以"類名.靜態(tài)變量"調(diào)用
?局部變量:方法體中定義,只在當(dāng)前代碼塊有效({變量作用范圍}),包括方法的參數(shù)。局部變量的使用高于成員變量,若同名則成員變量展示隱藏
三、運(yùn)算符與表達(dá)式
1. 算術(shù)運(yùn)算符
?算數(shù)運(yùn)算符的注意問(wèn)題:
1)取余(模):余數(shù)正負(fù)與”%左邊“的數(shù)保持一致。例:-1%5 = -1(商0),1%-5 = 1
2)“+”除字符串相加功能外,還能把非字符串轉(zhuǎn)換成字符串。例:System.out.println("5+5="+5+5); //打印結(jié)果是"5+5=10"
3)++?和 -- 既可以出現(xiàn)在操作數(shù)的左邊,也可以出現(xiàn)在右邊,但結(jié)果不同
2.賦值運(yùn)算符
?
3. 關(guān)系運(yùn)算符
4. 邏輯運(yùn)算符
注:a&&b若a為false則不會(huì)判斷條件b,a||b若a為true則不會(huì)判斷條件b,
6. 位運(yùn)算符
| 運(yùn)算符 | 名稱 | 舉例 | 運(yùn)算規(guī)則 | 結(jié)果 |
| & | “與”、“位與” | 5&4 | 如果兩個(gè)數(shù)的二進(jìn)制,相同位的數(shù)都是1,則該位結(jié)果是1,否則是0 | 5的二進(jìn)制是? 0000 0000 0000 0101,4的二進(jìn)制是? 0000 0000 0000 0100,則結(jié)果是 0000 0000 0000 0100? 轉(zhuǎn)為十進(jìn)制是4 |
| | | “或”、“位或” | 5 | 4 | 如果兩個(gè)數(shù)的二進(jìn)制,相同位的數(shù)有一個(gè)是1,則該位結(jié)果是1,否則是0 | 結(jié)果是? 0000 0000 0000 0101? 轉(zhuǎn)為十進(jìn)制是5 |
| ^ | “異或、“位異或” | 5 ^ 4 | 如果兩個(gè)數(shù)的二進(jìn)制,相同位的數(shù)只有一個(gè)是1,則該位結(jié)果是1,否則是0 | 結(jié)果是? ? ? ? 0000 0000 0000 0001 轉(zhuǎn)為十進(jìn)制是1? |
| ~ | “非”、“位非” | ~5 | 屬于一元操作符,只對(duì)一個(gè)操作數(shù)進(jìn)行操作,(其他按位操作符是二元操作符)。按位“非”生成與輸入位相反的值,——若輸入0,則輸出1,若輸入1,則輸出0 | 5的二進(jìn)制是? 0000 0000 0000 0101,則~5是 1111 1111 1111 1010? 轉(zhuǎn)為十進(jìn)制是 -6 |
| >> | 右移位 | 5>>2 | 按照操作符右側(cè)指定的位數(shù)將操作符左邊的操作數(shù)向右移。“有符號(hào)”右移位操作符使用“符號(hào)擴(kuò)展”;若符號(hào)位正,則在高位插入0;若符號(hào)位負(fù)。則在高位插入1 | 5的二進(jìn)制是? ?0000 0000 0000 0101 右移兩位? 0000 0000 0000 0001 |
| << | 左移位 | 5<<2 | 按照操作符右側(cè)指定的位數(shù)將操作符左邊的操作數(shù)向左移動(dòng)(在低位補(bǔ)0) | 5的二進(jìn)制是? ?0000 0000 0000 0101 左移兩位? 0000 0000 0001 0100 |
| >>> | “無(wú)符號(hào)”右移位 | 5>>>2 | 使用“零擴(kuò)展”;無(wú)論正負(fù),都在高位插入0 | 5的二進(jìn)制是? ?0000 0000 0000 0101 無(wú)符號(hào)右移兩位? 0000 0000 0000 0001 |
| ? | 負(fù)數(shù)的二進(jìn)制轉(zhuǎn)化,計(jì)算機(jī)計(jì)算是用的補(bǔ)碼 | -5 | 1、首先取出這個(gè)數(shù)的原碼的二進(jìn)制 2、然后再求出反碼 3、最后求出補(bǔ)碼 | -5的原碼是? ? ? ? ? ? ? 1000 0000 0000 0101 求出反碼的是? ? ? ? ? ? 1111 1111 1111 1010 求出補(bǔ)碼是? ? ? ? ? ? ? ?1111 1111 1111 1011 |
注:移位操作符只可用來(lái)處理整數(shù)類型;
7. 三元運(yùn)算符
? ? ? ??語(yǔ)法形式:布爾表達(dá)式 ? 表達(dá)式1 :表達(dá)式2
四、數(shù)組:用于存儲(chǔ)一組同一數(shù)據(jù)類型數(shù)據(jù)的容器
1. 一維數(shù)組
定義:數(shù)據(jù)類型[ ] 數(shù)組名 = new 數(shù)據(jù)類型[ ]{元素1,元素2……}? 或? ?數(shù)據(jù)類型[ ] 數(shù)組名 = {元素1,元素2……}
2. 二維數(shù)組:二維數(shù)組的每一個(gè)元素是一個(gè)一維數(shù)組
定義:數(shù)據(jù)類型[ ][ ] 數(shù)組名 = new 數(shù)據(jù)類型[二維數(shù)組的長(zhǎng)度/包含的一維數(shù)組的個(gè)數(shù)][每個(gè)一維數(shù)組的長(zhǎng)度];
? ? ?數(shù)據(jù)類型[ ][ ] 數(shù)組名 = new 數(shù)據(jù)類型[二維數(shù)組的長(zhǎng)度/包含的一維數(shù)組的個(gè)數(shù)][ ];
數(shù)據(jù)類型[][] 數(shù)組名 = {{元素},{元素1, 元素2},……};
3.數(shù)組在內(nèi)存中的存儲(chǔ)過(guò)程
內(nèi)存:棧內(nèi)存、堆內(nèi)存、方法區(qū)、本地方法棧(和其他語(yǔ)言交互)、寄存器(匯編)
棧內(nèi)存:可以用于存儲(chǔ)變量,棧內(nèi)存對(duì)存入其中的變量不會(huì)自動(dòng)賦值,變量在使用完成之后會(huì)立即移出棧內(nèi)存釋放空間
堆內(nèi)存:用于存儲(chǔ)對(duì)象的,堆內(nèi)存對(duì)于存入其中的元素會(huì)自動(dòng)的賦予初始值(byte/short/int:0,long:0L;float:0.0f,double:0.0,char:‘\u0000’,boolean:false),引用數(shù)據(jù)類型的默認(rèn)值都是null,對(duì)象使用完成之后不會(huì)立即移出堆內(nèi)存,而是在不定的某個(gè)時(shí)刻被回收
?
4.數(shù)組應(yīng)用
1)常用方法
- ?Arrays.fill(數(shù)組名,值):將數(shù)組中每個(gè)元素賦予相同的值。
-
Arrays.asList(數(shù)組):將數(shù)組轉(zhuǎn)化為集合(set,list)。
String s[] = {"wyy", "wzz", "wxx"}; List<String> list = new ArrayList<>(Arrays.asList(s)); list.add("whh"); System.out.println("ArrayList是否包含:" + list.contains("whh")); Set<String> set = new HashSet<>(Arrays.asList(s)); System.out.println("集合set是否包含:" + set.contains("wyy")); -
Arrays.toString(數(shù)組).contains(xxx):數(shù)組是否包含某個(gè)元素
-
ArrayUtils.addAll(array, array2) :連接兩個(gè)數(shù)組
-
arr.join( ", "):根據(jù)分隔符拼接數(shù)組元素
-
ArrayUtils.reverse(array):反轉(zhuǎn)數(shù)組
- Arrays.equals(score1,score2):比較兩個(gè)數(shù)組是否相等
-
Arrays.fill(array,value):數(shù)組填充
-
binarySearch(Object[] a,int fromIndex,int toIndex,Object key):在指定的范圍內(nèi)查找某一元素,在進(jìn)行數(shù)組查詢之前,必須對(duì)數(shù)組進(jìn)行排序(可以使用 sort() 方法),如果 key 包含在數(shù)組中,則返回搜索值的索引;否則返回 -1 或“-插入點(diǎn)”
public static void main(String[] args) {double[] score={99.5,100,98,97.5,100,95,85.5,100};Arrays.sort(score);int index1=Arrays.binarySearch(score,100);int index2=Arrays.binarySearch(score,60);System.out.println("查找到 100 的位置是:"+index1);System.out.println("查找到 60 的位置是:"+index2); } -
Arrays.copyOf(dataType[] srcArray,int length):默認(rèn)從源數(shù)組的第一個(gè)元素(索引值為 0)開(kāi)始復(fù)制,目標(biāo)數(shù)組的長(zhǎng)度將為 length。如果 length 大于 srcArray.length,則目標(biāo)數(shù)組中采用默認(rèn)值填充;如果 length 小于 srcArray.length,則復(fù)制到第 length 個(gè)元素(索引值為 length-1)即止。若目標(biāo)數(shù)組如果已經(jīng)存在,將會(huì)被重構(gòu)。
-
Arrays.copyOfRange(dataType[] srcArray,int startIndex,int endIndex):其中,srcArray 表示源數(shù)組;startIndex 表示開(kāi)始復(fù)制的起始索引,目標(biāo)數(shù)組中將包含起始索引對(duì)應(yīng)的元素,若目標(biāo)數(shù)組如果已經(jīng)存在,將會(huì)被重構(gòu)。
-
System.arraycopy(dataType[] srcArray,int srcIndex,int destArray,int destIndex,int length):方法位于 java.lang.System 類中,srcArray 表示源數(shù)組;srcIndex 表示源數(shù)組中的起始索引;destArray 表示目標(biāo)數(shù)組;destIndex 表示目標(biāo)數(shù)組中的起始索引;length 表示要復(fù)制的數(shù)組長(zhǎng)度。目標(biāo)數(shù)組必須已經(jīng)存在,且不會(huì)被重構(gòu),相當(dāng)于替換目標(biāo)數(shù)組中的部分元素。
-
array_name.clone():clone() 方法的返回值是 Object 類型,要使用強(qiáng)制類型轉(zhuǎn)換為適當(dāng)?shù)念愋汀@?#xff1a;int[] targetArray=(int[])sourceArray.clone();目標(biāo)數(shù)組如果已經(jīng)存在,將會(huì)被重構(gòu)。
- Arrays.sort(數(shù)組) :
- 導(dǎo)入 java.util.Arrays 包。
- 使用 Armys.sort(數(shù)組名) 語(yǔ)法對(duì)數(shù)組進(jìn)行排序,排序規(guī)則是從小到大,即升序。
?
2)數(shù)組元素排序
- 冒泡排序:在雙層循環(huán)中實(shí)現(xiàn),其中外層循環(huán)控制排序輪數(shù),總循環(huán)次數(shù)為要排序數(shù)組的長(zhǎng)度減 1。而內(nèi)層循環(huán)主要用于對(duì)比相鄰元素的大小,以確定是否交換位置,對(duì)比和交換次數(shù)依排序輪數(shù)而減少。
public voidarrSort(score){ //score是要排序的數(shù)組 System.out.println("通過(guò)冒泡排序方法對(duì)數(shù)組進(jìn)行排序:"); for(int i=0;i<score.length-1;i++) {//比較相鄰兩個(gè)元素,較大的數(shù)往后冒泡for (int j=0;j<score.length-1-i;j++){if(score[j]>score[j+1]){double temp=score[j+1]; //把第一個(gè)元素值保存到臨時(shí)變量中score[j+1]=score[j]; //把第二個(gè)元素值轉(zhuǎn)移到第一個(gè)元素變量中score[j]=temp; //把臨時(shí)變量(第一個(gè)元素的原值)保存到第二個(gè)元素中 }System.out.print(score[j]+ " "); //對(duì)排序后的數(shù)組元素進(jìn)行輸出 }System.out.print("【");for(int j=score.length-1-i;j<score.length;j++){System.out.print(score[j]+" ");}System.out.println("】"); } } - 選擇排序:每一趟從待排序的數(shù)據(jù)元素中選出最大(或最小)的一個(gè)元素,順序放在已排好序的數(shù)列的最后,直到全部待排序的數(shù)據(jù)元素排完
int[] number={13,15,24,99,4,1}; String end="\n"; int index; for(int i=1;i<number.length;i++) {index=0;for(int j=1;j<=number.length-i;j++){if(number[j]>number[index]){index=j; //查找最大值 }}end=number[index]+" "+end; //定位已排好的數(shù)組元素int temp=number[number.length-i];number[number.length-1]=number[index];number[index]=temp;System.out.print("【");for(int j=0;j<number.length-i;j++){System.out.print(number[j]+" ");}System.out.print("】"+end); }
五、流程控制語(yǔ)句(if,switch,for,while,do...while)
2. 循環(huán)語(yǔ)句
3.return 語(yǔ)句:用于終止函數(shù)的執(zhí)行或退出類的方法,并把控制權(quán)返回該方法的調(diào)用者。如果這個(gè)方法帶有返回類型,return 語(yǔ)句就必須返回這個(gè)類型的值;如果這個(gè)方法沒(méi)有返回值,可以使用沒(méi)有表達(dá)式的 return 語(yǔ)句。
4.break 語(yǔ)句:有 3 種作用,分別是:在 switch 語(yǔ)句中終止一個(gè)語(yǔ)句序列、使用 break 語(yǔ)句直接強(qiáng)行退出循環(huán)和使用 break 語(yǔ)句實(shí)現(xiàn) goto 的功能。
5.continue 語(yǔ)句:是跳過(guò)循環(huán)體中剩余的語(yǔ)句而強(qiáng)制執(zhí)行下一次循環(huán),其作用為結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。continue 語(yǔ)句類似于 break 語(yǔ)句,但它只能出現(xiàn)在循環(huán)體中。它與 break 語(yǔ)句的區(qū)別在于:continue 并不是中斷循環(huán)語(yǔ)句,而是中止當(dāng)前迭代的循環(huán),進(jìn)入下一次的迭代。簡(jiǎn)單來(lái)講,continue 是忽略循環(huán)語(yǔ)句的當(dāng)次循環(huán)。
注:continue 語(yǔ)句只能用在 while 語(yǔ)句、for 語(yǔ)句或者 foreach 語(yǔ)句的循環(huán)體之中,在這之外的任何地方使用它都會(huì)引起語(yǔ)法錯(cuò)誤。
? 6.標(biāo)簽功能:跳出外層循環(huán)
標(biāo)簽名:循環(huán)體{break 標(biāo)簽名;
} Loop:for(int i=0;i<3;i++){for(int j=0;j<3;j++){if(j==4){break Loop; //此處也可以用continue:跳過(guò)外層本次循環(huán),執(zhí)行外層下一次循環(huán) }} }
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/yutianbao/p/10454187.html
總結(jié)
以上是生活随笔為你收集整理的Java基础语法 第2节 Java语言基本语法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 运行 vue 报node错
- 下一篇: 安装Apache