java语言基础知识(完整版)
目錄
一、java開(kāi)發(fā)環(huán)境
二、名詞解釋
1.JVM
三、eclipse
1.定義
四、注釋
1.解釋性文本
2.其他注釋
五、變量
4.命名規(guī)則
六、八種數(shù)據(jù)基本類(lèi)型
七、數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換
1.自動(dòng)類(lèi)型轉(zhuǎn)換
八、運(yùn)算符
1.算術(shù)運(yùn)算符
(2)使用情況分兩種:
(3)簡(jiǎn)化版:
2.關(guān)系運(yùn)算符
九、分支結(jié)構(gòu)
1.if結(jié)構(gòu)
十、循環(huán)結(jié)構(gòu)
1.while結(jié)構(gòu)
十一、嵌套結(jié)構(gòu)
1.定義
十二、數(shù)組
1.定義
2.聲明
3.初始化
十三、方法
1.意義
2.定義
3.調(diào)用
十四、關(guān)鍵字用法
1.scanner
4.水平制表符 \t
一、java開(kāi)發(fā)環(huán)境
將.java源文件交給編譯器編譯成.class字節(jié)碼文件的過(guò)程
(2)運(yùn)行期:
把編譯后的.class字節(jié)碼文件經(jīng)過(guò)JVM加載并運(yùn)行.class字節(jié)碼文件
windows 10系統(tǒng)下配置JDK環(huán)境變量:
????? (1).安裝JDK,安裝過(guò)程中可以自定義安裝目錄等信息,例如我們選擇安裝目錄為D:/java/jdk1.8.0_08;
(2).安裝完成后,右擊“我的電腦”,點(diǎn)擊“屬性”;
(3).選擇“高級(jí)系統(tǒng)設(shè)置”選項(xiàng)卡,選擇“高級(jí)”欄,點(diǎn)擊“環(huán)境變量”;
(4).在“系統(tǒng)變量”中,設(shè)置3項(xiàng)屬性,JAVA_HOME?????PATH?????CLASSPATH
若已存在則點(diǎn)擊“編輯”,不存在則點(diǎn)擊“新建”;
(5).JAVA_HOME指明JDK安裝路徑,例如剛剛安裝時(shí)所選擇的路徑D:/java/jdk1.8.0_08,此路徑下包括lib,bin,jre等文件夾;
Path使得系統(tǒng)可以在任何路徑下識(shí)別java命令,設(shè)為:?%JAVA_HOME%/bin;
創(chuàng)建?CLASSPATH變量
CLASSPATH為java加載類(lèi)(class or lib)路徑,只有類(lèi)在classpath中,java命令才能識(shí)別,設(shè)為:?.;%JAVA_HOME%/lib ;
(6).“開(kāi)始”->;“運(yùn)行”(win10系統(tǒng)下 win+R鍵 回車(chē)),鍵入“cmd”;
(7).鍵入命令“javac”,“java”,“java -version”幾個(gè)命令,出現(xiàn)畫(huà)面,說(shuō)明環(huán)境變量配置成功即環(huán)境變量配置成功;
跨平臺(tái)的:軟件可以不受計(jì)算機(jī)硬件和操作系統(tǒng)的約束而在任意計(jì)算機(jī)環(huán)境下正常運(yùn)行;
面向?qū)ο?#xff1a;指以對(duì)象為基本粒度,其下包含屬性和方法;
安全性:可以分為四個(gè)層面,即語(yǔ)言級(jí)安全性、編譯時(shí)安全性、運(yùn)行時(shí)安全性、可執(zhí)行代碼安全性;
多線(xiàn)程是指允許一個(gè)應(yīng)用程序同時(shí)存在兩個(gè)或兩個(gè)以上的線(xiàn)程,用于支持事務(wù)并發(fā)和多任務(wù)處理;
一次編程到處使用:Java源代碼的書(shū)寫(xiě)不拘泥于特定的環(huán)境,可以用記事本、文本編輯器等編輯軟件來(lái)實(shí)現(xiàn),然后將源文件進(jìn)行編譯,編譯通過(guò)后可直接運(yùn)行
二、名詞解釋
1.JVM
Java虛擬機(jī);加載.class字節(jié)碼文件并運(yùn)行.class字節(jié)碼文件
Java運(yùn)行環(huán)境;包含JVM和運(yùn)行java所必需的java系統(tǒng)類(lèi)庫(kù)
Java開(kāi)發(fā)工具包,包含JRE和開(kāi)發(fā)java程序所必須的命令工具
三、eclipse
1.定義
IDE集成開(kāi)發(fā)環(huán)境(帶圖形界面的功能強(qiáng)大的開(kāi)發(fā)工具)
IBM公司的、開(kāi)源的、免費(fèi)的,不需要安裝,僅需解壓即可
新建Java項(xiàng)目/工程-------------小區(qū)
新建Java包--------------------樓+單元
新建Java類(lèi)--------------------房子
四、注釋
1.解釋性文本
單行注釋: // 文字注釋
多行注釋: /*
文字注釋
......
文字注釋
*/
文檔注釋: /** ?文檔注釋 ??*/
2.其他注釋
其他注釋屬于后期內(nèi)容,后期定會(huì)填充
五、變量
1.聲明-----------相當(dāng)于在銀行開(kāi)個(gè)賬戶(hù)
?int a; //聲明一個(gè)整型的變量,名為a
?int b,c,d; //聲明三個(gè)整型的變量,名為b,c,d
2.初始化--------相當(dāng)于給銀行賬戶(hù)存錢(qián)
?int a = 250; //聲明整型變量a并賦值為250
??????int a; ??//聲明整型變量a
??????a = 250; //給變量a賦值為250
3.使用-----------相當(dāng)于使用銀行賬戶(hù)里的錢(qián)
對(duì)變量的使用就是對(duì)它所存的那個(gè)數(shù)的使用??
???int a = 5;int b = a+10; //取出a的值5,加10后,再賦值給變量bSystem.out.println(b); ??//輸出變量b的值15System.out.println("b"); //輸出b,雙引號(hào)中的原樣輸出a = a+10; //取出a的值5,加10后,再賦值給a//在a本身基礎(chǔ)之上增10System.out.println(a); //15//變量在用之前必須聲明并初始化//System.out.println(m); //編譯錯(cuò)誤,變量m未聲明int m;//System.out.println(m); //編譯錯(cuò)誤,變量m未初始化4.命名規(guī)則
只能包含字母、數(shù)字、_和$符,并且不能以數(shù)字開(kāi)頭
嚴(yán)格區(qū)分大小寫(xiě)
不能使用關(guān)鍵字
允許中文命名,但不建議,
建議"英文的見(jiàn)名知意"、"駝峰命名法"
六、八種數(shù)據(jù)基本類(lèi)型
| 數(shù)據(jù)類(lèi)型 | 占位 | 字節(jié) | 范圍 | |
| 1 | byte | 8 | 1 | -128~127 |
| 2 | short | 16 | 2 | -32768~32767 |
| 3 | char | 16 | 2 | 0~65535 |
| 4 | int | 32 | 4 | -2147483648~2147483647 |
| 5 | double | 64 | 8 | 無(wú)限大 |
| 6 | float | 32 | 4 | 無(wú)限大 |
| 7 | long | 64 | 8 | -9223372036854775808~ 9223372036854775807 |
| 8 | boolean | 8 | 1 | True ??false |
七、數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換
byte short char 通常轉(zhuǎn)換為int計(jì)算
1.自動(dòng)類(lèi)型轉(zhuǎn)換
基本數(shù)據(jù)的自動(dòng)類(lèi)型轉(zhuǎn)換只有7種數(shù)據(jù)類(lèi)型,除了布爾型
基本原則:低級(jí)別可以轉(zhuǎn)高級(jí)別
從左向右可以依次轉(zhuǎn)換:byte-short-int-long-float-double
?char-int-long-float-double
運(yùn)算時(shí)的自動(dòng)轉(zhuǎn)換條件:兩種數(shù)據(jù)類(lèi)型要兼容,目標(biāo)類(lèi)型大于原類(lèi)型
當(dāng)范圍大的類(lèi)型與范圍小的類(lèi)型進(jìn)行運(yùn)算時(shí),結(jié)果會(huì)自動(dòng)轉(zhuǎn)成范圍大的類(lèi)型
2.強(qiáng)制類(lèi)型轉(zhuǎn)換
高級(jí)別轉(zhuǎn)低級(jí)別時(shí)必須進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換
是否進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換取決于數(shù)據(jù)類(lèi)型級(jí)別的高低,而不取決于數(shù)據(jù)類(lèi)型的實(shí)際值
格式:(type)value, type是要強(qiáng)制類(lèi)型轉(zhuǎn)換后的數(shù)據(jù)類(lèi)型
public class mainTest {public static void main(String[] args) {int pageSize = 3;long pageNo = 2;int num = ?(int) ((pageNo-1)*pageSize);// 強(qiáng)制類(lèi)型轉(zhuǎn)換,long類(lèi)型轉(zhuǎn)換為int類(lèi)型System.out.println(num);int test = ?(int)(pageNo-1)*pageSize;System.out.println(test);}}八、運(yùn)算符
1.算術(shù)運(yùn)算符
+ , - , * , / , % , ++ , --
(1)使用規(guī)則:必須與變量一起使用
a++/++a/a--/--a
++/--表示變量里的值會(huì)自動(dòng)+1/-1后存入變量里。
(2)使用情況分兩種:
與變量單獨(dú)使用時(shí)(既不與其他任何字符連用)
eg:a++
當(dāng)自增/自減表達(dá)式參與其他運(yùn)算時(shí)
符號(hào)在前,變量先自增/自減,然后把新值賦值給表達(dá)式。
符號(hào)在后,先把值賦值給表達(dá)式,變量再自增/自減。
(3)簡(jiǎn)化版:
符號(hào)在前,先運(yùn)算再賦值。
符號(hào)在后,先賦值再運(yùn)算。
2.關(guān)系運(yùn)算符
> , < , >= , <= ?,== , != , boolean
&& , || , ! ?boolean
| 邏輯運(yùn)算符 | 邏輯功能 |
| &(并且) | 有false則false |
| |(或者) | 有true則true。 |
| !(非) | 非false則true,非true則false。 |
| ^(異或) | 相同為false,不同為true。 |
| &&(短路與) | 有false則false,若&&左邊表達(dá)式或者值為false則右邊不進(jìn)行計(jì)算 |
| ||(短路或) | 有true則true,若||左邊表達(dá)式或者值為true則右邊不進(jìn)行計(jì)算 |
? ? 2.賦值運(yùn)算符
= , += , -= , *= , /= , %=
| 運(yùn)算符 | 用法舉例 | 等效的表達(dá)式 |
| += | a += b | a = a+b |
| -= | a -= b | a = a-b |
| *= | a *= b | a = a*b |
| /= | a /= b | a = a/b |
| %= | a %= b | a = a%b |
? 3.三目運(yùn)算符
boolean?語(yǔ)句塊1:語(yǔ)句塊2
執(zhí)行規(guī)則: ?Boolean值為true 則執(zhí)行 語(yǔ)句塊1;
Boolean值為false 則執(zhí)行 語(yǔ)句塊2;
? 4.字符串連接運(yùn)算符
字符串連接用 + 來(lái)實(shí)現(xiàn),“ + ”是算術(shù)運(yùn)算符又是字符串拼接運(yùn)算符,即 若同時(shí)出現(xiàn)則字符串連接前的運(yùn)算符為算術(shù)運(yùn)算符,字符串連接后的都為字符串連接運(yùn)算符
Eg.
System.out.println(9?+?7?+?"may"?+?4?+?7);輸出結(jié)果為?: 16may47
九、分支結(jié)構(gòu)
1.if結(jié)構(gòu)
語(yǔ)句:
if(boolean){語(yǔ)句塊}執(zhí)行過(guò)程:
若Boolean值為true,則執(zhí)行語(yǔ)句塊
若Boolean值為false,則不執(zhí)行語(yǔ)句塊
語(yǔ)句:
if(boolean){語(yǔ)句塊1}else{語(yǔ)句塊2}執(zhí)行過(guò)程:
若Boolean值為true,則執(zhí)行語(yǔ)句塊1
若Boolean值為false,則執(zhí)行語(yǔ)句塊2
? ? ? 2.if...else if結(jié)構(gòu)
語(yǔ)句:
if(boolean—1){語(yǔ)句塊1}elseif(boolean—2){語(yǔ)句塊2}elseif(boolean—3){語(yǔ)句塊3}else{語(yǔ)句塊4}執(zhí)行過(guò)程:
判斷boolean-1,結(jié)果為true則執(zhí)行語(yǔ)句塊1,若執(zhí)行條件為false則
執(zhí)行boolean-2,結(jié)果為true則執(zhí)行語(yǔ)句塊2,若執(zhí)行條件為false則
執(zhí)行boolean-3,結(jié)果為true則執(zhí)行語(yǔ)句塊3,若執(zhí)行條件為false則
執(zhí)行語(yǔ)句塊4
? ? ? 3.switch...case結(jié)構(gòu)
優(yōu)點(diǎn):效率高、結(jié)構(gòu)清晰
缺點(diǎn):只能對(duì)整數(shù)來(lái)判斷、相等
break:跳出switch
int num = 2;switch (num){ ????????//byte,short,int,char,//string(jdk 1.7后可以支持)case 1://if(num ==1)System.out.println(1);case 2://以此為入口System.out.println(2);break;//跳出switchcase 3://以此為入口System.out.println(3);default://所有case都未匹配時(shí)在執(zhí)行System.out.println(3);}十、循環(huán)結(jié)構(gòu)
1.while結(jié)構(gòu)
??語(yǔ)句:?
? while(boolean){語(yǔ)句塊}??執(zhí)行過(guò)程:
? 判斷boolean的值,若為true則執(zhí)行語(yǔ)句塊;
?? 判斷boolean的值,若為true則執(zhí)行語(yǔ)句塊;
?? 判斷boolean的值,若為true則執(zhí)行語(yǔ)句塊;
?? 如此反復(fù),直到boolean的值為false時(shí)結(jié)束
語(yǔ)句:
do{語(yǔ)句塊}while(boolean)執(zhí)行過(guò)程:
執(zhí)行語(yǔ)句塊,
判斷boolean的值,若為true則執(zhí)行語(yǔ)句塊;
?? 判斷boolean的值,若為true則執(zhí)行語(yǔ)句塊;
?? 判斷boolean的值,若為true則執(zhí)行語(yǔ)句塊;
?? 如此反復(fù),直到boolean的值為false時(shí)結(jié)束
? ? ? 2.for循環(huán)結(jié)構(gòu)
語(yǔ)句:
for(初始條件 1 ; 判斷條件 2; 改變條件 3 ){循環(huán)體 ??4;}或
初始條件1;for(;判斷條件2;){循環(huán)體4改變條件3;}執(zhí)行過(guò)程:(1 2 4 3 2 ?4 ?3 ?2)
執(zhí)行初始條件1
執(zhí)行判斷條件2 若為true,則執(zhí)行循環(huán)體4,在執(zhí)行改變條件3;
執(zhí)行判斷條件2 若為true,則執(zhí)行循環(huán)體4,在執(zhí)行改變條件3:
......
執(zhí)行判斷條件2 若為true,則執(zhí)行循環(huán)體4,在執(zhí)行改變條件3:
執(zhí)行判斷條件2 若為false,則for循環(huán)結(jié)束
for(;;){//沒(méi)有條件的循環(huán)是死循環(huán)
執(zhí)行體
}
? ? ? ?3.三種結(jié)構(gòu)最佳適用情況
先看循環(huán)是否與次數(shù)相關(guān)
若與次數(shù)相關(guān)-------for循環(huán)--------------打印機(jī)類(lèi)型
若與次數(shù)無(wú)關(guān),再看要素1與要素3是否相同
相同時(shí)-----do...while 語(yǔ)句循環(huán)-------猜數(shù)字游戲
不同時(shí)-----while語(yǔ)句循環(huán)
? ? ? ? 4.小結(jié):
1)順序結(jié)構(gòu):從上到下逐行執(zhí)行,每句必走
2)分支結(jié)構(gòu):有條件的執(zhí)行某語(yǔ)句一次,并非每句都走
3)循環(huán)結(jié)構(gòu):有條件的執(zhí)行某語(yǔ)句多次,并非每句都走
十一、嵌套結(jié)構(gòu)
1.定義
循環(huán)中套循環(huán), 一般多行多列時(shí)使用,外層控制行,內(nèi)層控制列
外層循環(huán)走一次,內(nèi)層循環(huán)走所有次
? ? ?2.建議
嵌套層數(shù)越少越好,能有一層就不用兩層,能用兩層就不用三層
若業(yè)務(wù)必須通過(guò)三層以上的循環(huán)來(lái)解決,說(shuō)明設(shè)計(jì)有問(wèn)題
十二、數(shù)組
1.定義
數(shù)組也是一種數(shù)據(jù)類(lèi)型(引用數(shù)據(jù)類(lèi)型)
數(shù)組是相同數(shù)據(jù)類(lèi)型元素的集合
2.聲明
int[] arr = new int [10];//聲明整型數(shù)組arr,包含10個(gè)元素//每個(gè)元素都是int類(lèi)型,默認(rèn)值為03.初始化
---初始化數(shù)組中的數(shù)據(jù)
int[] ?arr = new int [4]; //0,0,0,0int[] ?arr = {1,4,5,8};//1,4,5,8int[] ?arr = new int []{1,4,5,8};//1,4,5,8int[] arr;arr = {1,4,5,8};//編譯錯(cuò)誤,此方式只能聲明同時(shí)初始化arr = new []{1,4,5,8};//正確4.訪(fǎng)問(wèn)
----訪(fǎng)問(wèn)數(shù)組中的數(shù)據(jù)
(1)通過(guò)(數(shù)組名.length)可以獲得數(shù)組的長(zhǎng)度(元素的個(gè)數(shù))
int [] arr = new int [5];Systrem.out.println("arr.length");(2)通過(guò)下標(biāo)/索引來(lái)訪(fǎng)問(wèn)數(shù)組中的元素
??下表從0開(kāi)始,最大到(數(shù)組長(zhǎng)度-1)
int[] ?arr = new int [3];arr[0] = 100;//給arr第1個(gè)元素賦值為100;arr[1] = 100;//給arr第1個(gè)元素賦值為200;arr[2] = 100;//給arr第3個(gè)元素賦值為300;arr[3] = 400;//運(yùn)行時(shí),會(huì)發(fā)生數(shù)組下標(biāo)超出界限(越界)的異常System.out.println (arr.length);//輸出數(shù)組長(zhǎng)度System.out.println (arr[arr.length-1]);//輸出arr中最后一個(gè)數(shù)組5. 遍歷
----從頭到尾看
int[] arr = new int [10];for (int i = 0;i <arr.length;i++){//遍歷數(shù)組arr[i] = 100;//給每個(gè)元素都賦值為100arr[i] = (int)(Math.Random.()*100)//賦值100內(nèi)的隨機(jī)數(shù)System,out.println(arr[i]);//輸出每個(gè)元素}//將arr數(shù)組轉(zhuǎn)換為字符串并輸出
System.out println(Arrays.toString(arr));//簡(jiǎn)便輸出基本數(shù)組6.復(fù)制
方式1:(靈活性更好)
int[] a ={10,20,30,40,50};int[] b =new int[6];System.arraycopy(a, 1, b, 0, 4);//System.arraycopy(src, srcPos, dest, destPos, length);//a:源數(shù)組(src)//1:源數(shù)組的起始下標(biāo)(srcPos)//b:目標(biāo)數(shù)組(dest)//0:目標(biāo)數(shù)組的起始下標(biāo)(destPos)//4:要復(fù)制的元素個(gè)數(shù)(length)注意:此方式容易溢出!編譯出現(xiàn)錯(cuò)誤
方式2:(靈活性差)
int[] a = {2,5,3,8,6,7};int[] b = Arrays.copyOf(a, 6);//int[] b = Arrays.copyOf(original, newLength);//a:源數(shù)組(original)//b:目標(biāo)數(shù)組//6:目標(biāo)數(shù)組的長(zhǎng)度(元素個(gè)數(shù))(newLength)//--若目標(biāo)數(shù)組長(zhǎng)度大于源數(shù)組長(zhǎng)度,則末尾補(bǔ)默認(rèn)值0//--若目標(biāo)數(shù)組長(zhǎng)度小于源數(shù)組長(zhǎng)度,則從末尾截掉a = Arrays.copyOf(a,a.length+1);//數(shù)組擴(kuò)容7.排序
常用的排序方法:冒泡排序、插入排序、快速排序---執(zhí)行效率不算太高
冒泡排序---工作中永遠(yuǎn)不會(huì)寫(xiě),但是一個(gè)常見(jiàn)面試題
排序分類(lèi):升序(從小到大)/降序(從大到小)
(1)Arrays.sort(arr);//對(duì)arr進(jìn)行升序排列
(2)升序排列:
for (int i = 0; i < arr.length; i++) {Arrays.sort(arr);System.out.print(arr[i]+"\t");}?降序排列:
for(int i=arr.length-1;i>=0;i--) {Arrays.sort(arr);System.out.print(arr[i]+"\t");}十三、方法
1.意義
1)封裝一段特定的業(yè)務(wù)邏輯功能
2)方法盡可能獨(dú)立,一個(gè)方法只干一件事
3)方法可以被反復(fù)調(diào)用多次
4)減少代碼重復(fù),有利于代碼的復(fù)用;有利于團(tuán)隊(duì)的協(xié)作
2.定義
五要素:
修飾詞 ?返回值類(lèi)型 ??方法名(參數(shù)列表){
方法體
}
1)修飾詞:public ?
2)返回值類(lèi)型:方法可有返回值,也可沒(méi)有返回值
無(wú)返回值時(shí):返回值類(lèi)型寫(xiě)成void
有返回值時(shí):返回值類(lèi)型寫(xiě)成特定的數(shù)據(jù)類(lèi)型
??返回值有誤判斷:
方法執(zhí)行完后
(1)若還需要用到方法中的某個(gè)數(shù)據(jù)-----有返回值
(2)若不再需要用到方法中的某個(gè)數(shù)據(jù)---無(wú)返回值
3)方法名:見(jiàn)明知義,駝峰命名
4)參數(shù)列表:方法可有參,也可無(wú)參
參數(shù): ?定義方法時(shí)的參數(shù)為 形參-----String name/int i...
調(diào)用方法時(shí)的參數(shù)為 實(shí)參-----int i=3/lisi/12
有參數(shù):方法更加靈活
無(wú)參數(shù):
5)方法體:
3.調(diào)用
1)無(wú)返回值:方法名(有參傳參)
2)有返回值:若有返回值,則在的方法中必須通過(guò)return來(lái)返回?cái)?shù)據(jù)
并且return后的書(shū)必須與返回值類(lèi)型匹配
數(shù)據(jù)類(lèi)型 ?變量 = 方法名(有參傳參)
十四、關(guān)鍵字用法
1.scanner
Scanner接受用戶(hù)輸入的數(shù)據(jù)
1)在package下:
import java.util.Scanner;2)在main中:
Scanner com = new Scanner(System.in);3)在第二步之后:
int command = com.nextInt();2.break與continue
?break:循環(huán)中看到break就跳出循環(huán)(在某種特殊條件下提前結(jié)束循環(huán))
當(dāng)多層嵌套時(shí),只用于跳出一層循環(huán)
continue:跳過(guò)循環(huán)體中的剩余語(yǔ)句,進(jìn)入下一次循環(huán)(不能出現(xiàn)在switch語(yǔ)句中)
3.Return
1)return值:
(1)結(jié)束方法的執(zhí)行
(2)返回結(jié)果給調(diào)用方
--用在有返回值的方法中
2)return; :
(1)結(jié)束方法的執(zhí)行
(2)在某種特定條件下提前結(jié)束方法
4.水平制表符 \t
\t 表示制表符,相當(dāng)于制表符
前面的輸出內(nèi)容位數(shù)為8的倍數(shù),\t將輸出8個(gè)空格
前面的輸出內(nèi)容位數(shù)不是8的倍數(shù),\t將補(bǔ)足8位
總結(jié)
以上是生活随笔為你收集整理的java语言基础知识(完整版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python:NumPy-随机抽样
- 下一篇: nrcellcu和nrcelldu_01