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