Spring Boot 基於 GraalVM 構建
Java基礎02
JavaDoc生成文件
引數資訊:
@author 作者名
@version 版本號
@since 指明需要最早使用的jdk版本
@param 引數名
@return 返回值情況
@throws 異常丟擲情況
生成文件:
javadoc -encoding UTF-8 charset UTF-8 xx.java
Jvm就會根據Java檔案中的JavaDoc註釋去生成相應的JavaDoc文件
使用者互動Scanner類
Scanner類能獲取使用者的輸入
基本語法:Scanner scanner = new Scanner(System.in);,這樣就建立了一個scanner物件,
那麼我們通過建立的這個scanner物件來獲取使用者輸入通過Scanner類的next()與nextLine()方法獲取字串輸入,讀取前一般需要用hsaNext()與hasNextLine()判斷時候還有資料輸入
next() :讀取一個字元,其在使用的時候需要注意一下幾點:
- 一定要讀取到有效字元後才可以結束輸入
- 對輸入有效字元之前遇到的空白,next()方法會自動將其去掉
- 只有輸入有效字元後才將其後面的空白作為分隔符或結束符
- next()不能得到帶有空格的字串
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s = scanner.next(); System.out.println(s); }
當輸入一串空格加字串後,得到的結果:
當字元之間間隔空格時,得到的結果:
nextLine() :以Enter為結束符,nextline方法返回回車之前的所有字元,可以獲取空白:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// String s = scanner.next();
String s = scanner.nextLine();
System.out.println(s);
}
同樣測試當輸入一串空格加字串後,得到的結果:
當字元之間間隔空格時,得到的結果:
Scanner :進階
我們還可以通過scanner.nextdouble()來獲取浮點數輸入,nextint來獲取整數輸入等等...
Java流程控制
順序結構:
一句一句程式碼的往下執行,稱之為順序結構
選擇結構
- if單選結構:結構中僅僅包含一個if
- if雙選擇結構:if-else結構,與if單選結構相差不大
- if多選擇結構:if-elseif...-else,一旦一個elseif語句為True,則跳過下面所有語句
- 巢狀if結構:if-if
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入成績:");
//if-elseif-else結構
while (scanner.hasNextDouble()){
double x = scanner.nextDouble();
if(x>60&&x<=100){
System.out.println("及格");
}
else if(x<60&&x>=0){
System.out.println("不及格");
}
else{
System.out.println("輸入資料不合法");
}
}
scanner.close();
}
- switch多選擇結構:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入大寫等級:");
String x = scanner.next();
switch (x){
// 注意:每個case結束後要有break語句,否則會一直執行
case "A":
System.out.println("優秀");
break;
case "B":
System.out.println("合格");
break;
case "C":
System.out.println("一般");
break;
default:
System.out.println("非法輸入");
}
}
迴圈結構
- while迴圈:while(表示式){} 表示式為True 迴圈執行
- do-while迴圈:do{}while(表示式) 至少執行一次
public static void main(String[] args) {
//輸出1-20的數
//while迴圈
System.out.println("while方式輸出");
int i = 1;
int a = 1;
while (i<=20){
System.out.println(i);
i++;
}
System.out.println("------------------------");
System.out.println("do-while方式輸出");
do{
System.out.println(a);
a++;
}while (a<=20);
}
二者的區別在於:while先判斷後執行,do-while先執行一次後判斷
- for迴圈:
public static void main(String[] args) {
int sum = 0;
int xsum = 0;
//for迴圈
for (int i = 0; i <=100; i++) {
if(i%2==0){
sum+=i;
}
else{
xsum+=i;
}
}
System.out.println("偶數和"+sum);
System.out.println("奇數和"+xsum);
}
增強for迴圈:主要用於陣列上面的輸出之類
//增強for迴圈
public static void main(String[] args) {
int[] num = new int[]{10,20,30,40};
for(int i:num){
System.out.println(i);
}
}
方法
方法的定義及呼叫
修飾符 返回值型別 方法名(引數型別 引數名){方法體}
public static int add(int a,int b){
return a+b;
}
方法過載
在一個類中,有相同的函式名,但是形參不同的函式
過載規則
- 方法名必須相同
- 引數列表必須不同,個數或型別不同,引數排列順序不同等
- 方法的返回型別可以相同也可以不同
- 僅僅返回型別不同不足以方法過載
方法名稱相同時,編譯器會根據呼叫的方法的引數個數,引數型別等去逐個匹配,選擇對應的方法,如果匹配失敗,則編譯器報錯。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double x = scanner.nextDouble();
double y = scanner.nextDouble();
double z = scanner.nextDouble();
//兩個引數,呼叫第一個add方法
double q = add(x,y);
System.out.println(q);
//三個引數,呼叫第二個add方法
double w = add(x,y,z);
System.out.println(w);
}
public static double add(double a,double b){
return a+b;
}
//方法過載add
public static double add(double a,double b,double c){
return (a+b)/c;
}
遞迴
一個方法反覆呼叫自己的方法,遞迴包含兩個部分:
- 遞迴頭:什麼時候不呼叫自身方法,如果沒有頭則陷入死迴圈
- 遞迴體:什麼時候需要呼叫自身方法
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
System.out.println(diGui(i));
}
// 使用階乘來解釋遞迴
public static int diGui(int i){
if (i==1) {
// 遞迴頭,當i=1時停止呼叫遞迴體
return 1;
}else {
// 遞迴體,反覆呼叫diGui()
return i*diGui(i-1);
}
}
陣列
相同型別資料的有序集合,屬於引用型別
陣列的宣告及建立
宣告一個數組:變數型別[] 變數名字 = 變數的值
列如:int[] a = {1,2,3}
建立一個數組物件:
int[] a = new int[]
陣列初始化的方式
- 靜態初始化:int[] a = {1,2,3,4}
- 動態初始化:int[] b = new int[10] 然後再一個一個賦值
- 預設初始化:就是未被初始化的空間都是預設的值
陣列的基本特點
- 陣列的長度時確定的,陣列一旦被建立,大小就是不可以被改變的了
- 陣列中的元素型別必須相同,不允許出現混合型別
- 陣列中的元素可以是任何資料型別,包括基本型別和引用型別
- 陣列變數屬於引用型別,陣列可以看成是物件,陣列中的每個元素相當於該物件的成員變數
- 陣列本身就是物件,Java中物件是在堆中的,因此陣列無論儲存原始型別還是其他物件型別,陣列物件本身實在堆中的
Arrays類
陣列的工具類java.util.Arrays,Arrays類中的方法都是static修飾的靜態方法,在使用的時候可以直接通過類名來呼叫,而不需要new物件
在這裡先定義幾個陣列,方便下面介紹Arrays的一些功能
int[] a = {1,2,5,35,666,3,876};
int[] b = {2,4,7,10,999};
int[] c = {1,2,5,35,666,3,876};
Arrays類的一些常用功能:
- 給陣列賦值,通過fill方法
// Arrays.fill()將陣列a中的所有元素賦值為0
Arrays.fill(a,0);
System.out.println(Arrays.toString(a));
// 將第二,五個數賦值為6
Arrays.fill(a,2,5,6);
System.out.println(Arrays.toString(a));
- 對陣列排序:通過sort方法,升序排序
// Arrays的sort方法對陣列進行排序
Arrays.sort(a);
// Arrays.toString()是輸出陣列的一種方法
System.out.println(Arrays.toString(a));
- 比較陣列:通過equals方法比較陣列中元素是否相等
// Arrays.equals()比較兩個陣列是否相等,返回值為Boolean型別
boolean x = Arrays.equals(a,c);
System.out.println(x);
- 查詢陣列元素:通過binarySearch方法能對排序好的陣列進行二分查詢法操作
Arrays.sort(a);
// 通過binarySearch方法能對排序好的陣列進行二分查詢法操作,返回的是要查詢的數在排好序陣列中的下標
Arrays.binarySearch(a,666);
System.out.println(Arrays.binarySearch(a,666));