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}