Java01

weixin_45303716發表於2020-10-02

Java

**Java是一個平臺**
	JVM java virtual machine java虛擬機器(用軟體模擬硬體)
	JRE java runtime environment java執行時環境
	JDK java development kit java開發工具包
		目錄:bin
			jar.exe			打jar包
			java.exe		執行java位元組碼程式->啟動虛擬機器
			javac.exe		編譯java源程式->生成位元組碼程式
			javadoc.exe		生成文件
**Java能做什麼**
	JavaSE Client/Server
	JavaEE WebApp
	JavaME 嵌入式
**Java語言是一門唯一可以執行在Java平臺的語言**
**Java是一門跨平臺(write once, run anywher)的物件導向的程式語言**
	跨平臺:一套程式碼可以在不同的作業系統上執行
		通過JVM實現跨平臺:翻譯
		原始碼=編譯=>位元組碼=虛擬機器=>執行
**Java程式的結構**
	基本單元:類
		類的語法結構:
		public class 類名{}
		類名命名規則
			//1、只能由字母,數字,下劃線,$,¥
			//2、不能以數字開頭,一般以大寫字母開頭,每個單詞首字母大寫
			//3、見名知意
			//4、公共類類名必須和檔名一致
	程式入口
		public static void main(String【】 args){}
	控制檯輸出
		System		java內建物件
		System.in 	java標準輸入流
		System.out 	java標準輸出流
		System.out.print("內容");		輸出不換行
		System.out.println("內容");		輸出後換行
		輸出轉義符 “\?”
			\n : 換行符
			\t : 製表符(8個字母,4個漢字)
			位元組:bit :0/1 byte:0~255/-128~-127
			Java中為了相容中文采取雙位元組編碼
**java變數**
	房間型別		資料型別
	地址房號		變數名稱
	入住			賦值
	
	java資料型別
		基礎型別
			字元型別
				單字元
				char	'?'(單引號中必須要有一個並且只能有一個符號)
				字串
				String	""(長度0~:受限於記憶體)
			數值型別
				整數
				byte:0~255/-128~127	1個位元組
				short:-32768~32767		2個位元組
				int:±21億				4個位元組
				long:					8個位元組
				BigInteger
				小數
				float:近似型別
				double:
				BigDecimal:精確型別
			布林型別
				布林
				bit		0/1
				boolean	false/true
		引用型別
**java變數使用三步驟**
	1、宣告
		語法:資料型別 變數名稱;
		變數命名的規範
			1、只能由字母,數字,下劃線,$,¥
			2、不能以數字開頭,駝峰命名法
			3、見名知意
			4、公共類類名必須和檔名一致
	2、賦值
		變數名稱 = 值;
	3、使用
		變數名稱1 = 變數名稱1+變數名稱2
		System.out.println(變數名稱1)
	1+2組合:資料型別 變數名稱=值;
	同一個型別,多個變數:資料型別 變數1,變數2。。。  
**java常量:final 資料型別 常量名稱 = 值;**
	常量名稱:不能以數字開頭,全部字母大寫
**資料型別轉換**
	算術表示式的最終型別取決於表示式中的最大型別
	向上轉型:小轉大,自動型別轉化
		float a = 1;
		byte a = 120;
		int b = a.
	向下轉型:大轉小,強制型別轉換
		float a = 1.0f;
		float a = (float)(1+1.0);
		long a = 12345678L;
**java控制檯輸入**
	1、匯入類:
		improt
	2、建立工具物件
		Scanner input = new Scanner(System.in)
	3、控制檯接受使用者輸入值
		xxx 變數名 = input.nextXxx();
 **運算子**
	算術運算子
		+ - * / %
		++ --
		a++ 先取值後運算
		++a 先運算後取值
		+= -= *= /=
			a=a+1 = a++/++a = a+=1
			a=a+N = a+=N
			算術表示式的最終型別由表示式中最大型別決定
	關係運算子
	  	> < >= <= == !=
	  	關係表示式最終結果為 Boolean
	  	1>2 false
	  	int a = ?
	 	 a>=3 true
	邏輯運算子
		&&	//邏輯與 二元短路與	都為true為true,否則為false
		||	//邏輯或 二元短路或	都為false為false,否則為true
		!	//邏輯非 前置一元運算子 !true=false/!false=true
			短路:邏輯表示式左側表示式的結果能夠確定最終結果,右側表示式不予執行
	賦值運算子
	= //從右向左執行
	三元運算子m
	xxx val = boolean ? V1 : V2;
**分支結構**
	單分支
		if(條件){程式碼}
	雙分支
		if(條件){程式碼}else{程式碼}
	多分支
		if(條件){程式碼}else if(條件){程式碼}...else{程式碼}
		switch(){case 常量1:程式碼1...default:程式碼 break}
			 if做區間條件,switch做等值條件
				貫穿現象,只支援long一下的整數,jdk1.8之後開始支援String
**巢狀分支**
	if(){
		if(){}
		switch(){}
	}
**迴圈**
	概念:重複性操作
	四要素:
		1、迴圈變數的宣告和初始化
		2、迴圈條件的構建
		3、迴圈體
		4、迴圈變數的更新
**使用迴圈解決問題**
		1、是否存在重複性操作
		2、如果存在,確定四要素
		3、選擇迴圈的機構,再套用其語法
			while 和 do...while 迴圈次數不確定的迴圈
				while 先判斷後執行
				do...while 先執行後判斷
			for 迴圈次數確定
		4、確認迴圈是否能夠正常結束
**基礎迴圈**
		while(條件){迴圈體}
		do{迴圈體}while(條件);
		for(迴圈變數的宣告和初始化;條件;迴圈變數的更新){迴圈體}
	迴圈跳轉語句
		continue:結束本次迴圈,進入下一次迴圈
		break:結束迴圈
**增強迴圈**
	for(xxx v : arr){
		v[]//只能看,不能改
	}
**迭代迴圈**
	概念:迭代演算法是用計算機解決問題的一種基本方法,它利用計算機運算速度快、適合做重複性操作的特點,讓計算機對一組指令(或一定步驟)進行重複執行,在每次執行這組指令(或這些步驟)時,都從變數的原值推出它的一個新值。
**一維陣列**
	變數概念:一種儲存空間的表示
	陣列概念:一組型別相同的連續的儲存空間的表示
		優點
			1、型別相同:不用考慮型別
			2、連續:遍歷
		缺點
			1、型別相同:無法解決不同型別多個值的儲存
			2、連續:插入,移除
**陣列使用步驟**
		1、宣告			xxx[] array;
		2、分配空間		array = new xxx[int LENGTH];
		3、賦值			array[int INDEX] = VALUE;
		4、使用			System.out.println(array[int INDEX])
**陣列的屬性**
		1、不可變
		2、長度固定:int len = array.length;
		3、下標(索引):0~array.length-1:如果超出範圍會報異常
**特殊語法**
		1+2+3:xxx[] array = {VALUE1,VALUE2...};
		int[] arr = {};
    	int[] arr2 = {5,7,9};
   		int[] arr3 = new int[]{5,7,9}