大家好呀,上一期基礎加固篇反向很熱烈呀,這期我就就像在代碼中帶大家回顧Java中的基礎知識,可以自己敲一下看看,加深理解,根據這些知識我還整理了一張圖,基本上每個知識點都有注釋詳解,大家有需要的可以找我要,點這里加群領取資料
選自己想看的戳上去哦
- 字串型別
- 字串連接 +
- 空值null和空字串
- 陣列型別
- 命令列引數String[ ] args
- 關鍵字var
- 輸入和輸出
- 輸出System.out.println();
- 輸入:Scanner scanner = new Scanner(System.in); String name = scanner.nextLine();
- 最后,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰, 可以的話請給我一個三連支持一下我喲,我們下期再見
字串型別
和char型別不同,字串型別String是參考型別,我們用雙引號"…"表示字串,一個字串可以存盤0個到任意個字符:
String s = ""; // 空字串,包含0個字符
String s1 = "A"; // 包含一個字符
String s2 = "ABC"; // 包含3個字符
String s3 = "中文 ABC"; // 包含6個字符,其中有一個空格
因為字串使用雙引號"…"表示開始和結束,那如果字串本身恰好包含一個"字符怎么表示?例如,“abc"xyz”,編譯器就無法判斷中間的引號究竟是字串的一部分還是表示字串結束,這個時候,我們需要借助轉義字符\:
String s = "abc\"xyz"; // 包含7個字符: a, b, c, ", x, y, z
因為\是轉義字符,所以,兩個\表示一個\字符:
String s = "abc\\xyz"; // 包含7個字符: a, b, c, \, x, y, z
常見的轉義字符包括:
" 表示字符"
’ 表示字符’
\ 表示字符
\n 表示換行符
\r 表示回車符
\t 表示Tab
\u#### 表示一個Unicode編碼的字符
例如:
String s = "ABC\n\u4e2d\u6587"; // 包含6個字符: A, B, C, 換行符, 中文
字串連接 +
Java的編譯器對字串做了特殊照顧,可以使用+連接任意字串和其他資料型別,這樣極大地方便了字串的處理,例如:
// 字串連接
public class Main {
public static void main(String[] args) {
String s1 = "Hello";
String s2 = "world";
String s = s1 + " " + s2 + "!";
System.out.println(s);
}
}
運行結果:
Hello world!
如果用+連接字串和其他資料型別,會將其他資料型別先自動轉型為字串,再連接:
// 字串連接
public class Main {
public static void main(String[] args) {
int age = 25;
String s = "age is " + age;
System.out.println(s);
}
}
運行結果:
age is 25
空值null和空字串
參考型別的變數可以指向一個空值null,它表示不存在,即該變數不指向任何物件,例如:
String s1 = null; // s1是null
String s2; // 沒有賦初值值,s2也是null
String s3 = s1; // s3也是null
String s4 = ""; // s4指向空字串,不是null
注意要區分空值null和空字串"",空字串是一個有效的字串物件,它不等于null,
陣列型別
定義一個陣列型別的變數,使用陣列型別“型別[]”,例如,int[],和單個基本型別變數不同,陣列變數初始化必須使用new int[5]表示創建一個可容納5個int元素的陣列,
Java的陣列有幾個特點:
陣列所有元素初始化為默認值,整型都是0,浮點型是0.0,布爾型是false;
陣列一旦創建后,大小就不可改變,
要訪問陣列中的某一個元素,需要使用索引,陣列索引從0開始,例如,5個元素的陣列,索引范圍是0~4,
可以修改陣列中的某一個元素,使用賦值陳述句,例如,ns[1] = 79;,
可以用陣列變數.length獲取陣列大小:
// 陣列
public class Main {
public static void main(String[] args) {
// 5位同學的成績:
int[] ns = new int[5];
System.out.println(ns.length); // 5
}
}
Run
5
陣列是參考型別,在使用索引訪問陣列元素時,如果索引超出范圍,運行時將報錯:
// 陣列
public class Main {
public static void main(String[] args) {
// 5位同學的成績:
int[] ns = new int[5];
int n = 5;
System.out.println(ns[n]); // 索引n不能超出范圍
}
}
Run
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException:
Index 5 out of bounds for length 5
at Main.main(Main.java:7)
也可以在定義陣列時直接指定初始化的元素,這樣就不必寫出陣列大小,而是由編譯器自動推算陣列大小,例如:
// 陣列
public class Main {
public static void main(String[] args) {
// 5位同學的成績:
int[] ns = new int[] { 68, 79, 91, 85, 62 };
System.out.println(ns.length); // 編譯器自動推算陣列大小為5
}
}
Run
5
還可以進一步簡寫為:
int[] ns = { 68, 79, 91, 85, 62 };
命令列引數String[ ] args
Java程式的入口是main方法,而main方法可以接受一個命令列引數,它是一個String[]陣列,
這個命令列引數由JVM接收用戶輸入并傳給main方法:
public class Main {
public static void main(String[] args) {
for (String arg : args) {
System.out.println(arg);
}
}
}
我們可以利用接收到的命令列引數,根據不同的引數執行不同的代碼,例如,實作一個-version引數,列印程式版本號:
public class Main {
public static void main(String[] args) {
for (String arg : args) {
if ("-version".equals(arg)) {
System.out.println("v 1.0");
break;
}
}
}
}
上面這個程式必須在命令列執行,我們先編譯它:
$ javac Main.java
然后,執行的時候,給它傳遞一個-version引數:
$ java Main -version
v 1.0
這樣,程式就可以根據傳入的命令列引數,作出不同的回應,
關鍵字var
var關鍵字
有些時候,型別的名字太長,寫起來比較麻煩,例如:
StringBuilder sb = new StringBuilder();
這個時候,如果想省略變數型別,可以使用var關鍵字:
var sb = new StringBuilder();
編譯器會根據賦值陳述句自動推斷出變數sb的型別是StringBuilder,對編譯器來說,陳述句:
var sb = new StringBuilder();
實際上會自動變成:
StringBuilder sb = new StringBuilder();
因此,使用var定義變數,僅僅是少寫了變數型別而已,
輸入和輸出
輸出System.out.println();
println是print line的縮寫,表示輸出并換行,因此,如果輸出后不想換行,可以用print():
// 輸出
public class Main {
public static void main(String[] args) {
System.out.print("A,");
System.out.print("B,");
System.out.print("C.");
System.out.println();
System.out.println("END");
}
}
運行結果:
A,B,C.
END
格式化輸出
Java還提供了格式化輸出的功能,為什么要格式化輸出?因為計算機表示的資料不一定適合人來閱讀:
// 格式化輸出
public class Main {
public static void main(String[] args) {
double d = 12900000;
System.out.println(d); // 1.29E7
}
}
運行結果:
1.29E7
如果要把資料顯示成我們期望的格式,就需要使用格式化輸出的功能,格式化輸出使用System.out.printf(),通過使用占位符%?,printf()可以把后面的引數格式化成指定格式:
// 格式化輸出
public class Main {
public static void main(String[] args) {
double d = 3.1415926;
System.out.printf("%.2f\n", d); // 顯示兩位小數3.14
System.out.printf("%.4f\n", d); // 顯示4位小數3.1416
}
}
Java的格式化功能提供了多種占位符,可以把各種資料型別“格式化”成指定的字串:
占位符 說明
%d 格式化輸出整數
%x 格式化輸出十六進制整數
%f 格式化輸出浮點數
%e 格式化輸出科學計數法表示的浮點數
%s 格式化字串
注意,由于%表示占位符,因此,連續兩個%%表示一個%字符本身,
占位符本身還可以有更詳細的格式化引數,下面的例子把一個整數格式化成十六進制,并用0補足8位:
// 格式化輸出
public class Main {
public static void main(String[] args) {
int n = 12345000;
System.out.printf("n=%d, hex=%08x", n, n); // 注意,兩個%占位符必須傳入兩個數
}
}
運行結果:
n=12345000, hex=00bc5ea8
輸入:Scanner scanner = new Scanner(System.in); String name = scanner.nextLine();
和輸出相比,Java的輸入就要復雜得多,
我們先看一個從控制臺讀取一個字串和一個整數的例子:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 創建Scanner物件
System.out.print("Input your name: "); // 列印提示
String name = scanner.nextLine(); // 讀取一行輸入并獲取字串
System.out.print("Input your age: "); // 列印提示
int age = scanner.nextInt(); // 讀取一行輸入并獲取整數
System.out.printf("Hi, %s, you are %d\n", name, age); // 格式化輸出
}
}
首先,我們通過import陳述句匯入java.util.Scanner,import是匯入某個類的陳述句,必須放到Java源代碼的開頭,后面我們在Java的package中會詳細講解如何使用import,
然后,創建Scanner物件并傳入System.in,System.out代表標準輸出流,而System.in代表標準輸入流,直接使用System.in讀取用戶輸入雖然是可以的,但需要更復雜的代碼,而通過Scanner就可以簡化后續的代碼,
有了Scanner物件后,要讀取用戶輸入的字串,使用scanner.nextLine(),要讀取用戶輸入的整數,使用scanner.nextInt(),Scanner會自動轉換資料型別,因此不必手動轉換,
要測驗輸入,我們不能在線運行它,因為輸入必須從命令列讀取,因此,需要走編譯、執行的流程:
javac Main.java
最后,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰, 可以的話請給我一個三連支持一下我喲,我們下期再見
領取資料

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/295155.html
標籤:java
上一篇:日期處理類
下一篇:# Day15-Java基礎
