
?? ? ? ? ? ? 🚀 🚀 🚀 🚀 🚀
??大家好🤝,我是👉老孫👈,未來學習路上多多關照🤝,一個不善于寫作??卻喜歡用博客記錄人生的程式猿🙉,或許這是一件有意義又有趣的事📖,不為別的,只想看看自己到低能走多遠🌏,是怎么走遠的 ?🏘??
??🔥 🔥 🔥 🔥 🔥 ? ? ? ? ?
Java 基礎語法
- 一、Java識別符號
- 1、識別符號(Identifier)
- 2、定義合法識別符號的規則
- 3、Java中的名稱命名規范
- 二、Java關鍵字【53個】
- 1、關鍵字(keyword)【51】
- 2. 保留字(reserved word)【2】
- 3、關鍵字分類(圖片)
- 4、關鍵字和保留字簡述(表格)
- 三、變數
- 1、變數的定義和使用
- 2、變數的分類
- 3、常見問題
- 四、資料型別
- 1、思維導圖 + 圖片 + 表格
- 2、整數型別:byte、short、int、long
- 3、浮點型別:float、double
- 4、字符型別:char
- 4.1、字符char
- 4.2、常見轉義字符
- 5、布爾型別:boolean
- 6、ASCII 碼
- 7、Unicode 編碼
- 8、UTF-8
- 9、字串型別String
- 五、Scanner類輸入與輸出
- 1、輸入與輸出
- 2、Scanner類的使用
- 六、格式化輸出 printf
- 1、保留xx位小數
- 2、楊輝三角(資料靠左或右)
前期內容回顧:
- Java學習筆記【1】Java概述
- Java學習筆記【2】JDK環境配置
- Java學習筆記【3】第一個 Java 程式Hello World!

一、Java識別符號
1、識別符號(Identifier)
Java對各種 變數、方法 和 類 等要素命名時使用的字符序列稱為 識別符號
- 比如:變數名、類名、方法名、介面名、包名 . . .
- 技巧:凡是自己可以起名字的地方都叫識別符號
2、定義合法識別符號的規則
如果不遵守如下規則,編譯不通過,需要大家嚴格遵守 !
- 由26個英文字母大小寫、0~9、_ 或 $ 組成
- 數字不可以開頭
- 不可以使用關鍵字和保留字,但能包含關鍵字和保留字(比如:staticpublic)
- Java中嚴格區分大小寫,長度無限制
- 識別符號不能包含空格
3、Java中的名稱命名規范
如果不遵守如下規范,編譯可以通過!建議大家遵守!
- 包名:多單詞組成時所有的字母都小寫:xxyyyzz
- 類名、介面名:多單詞組成時,所有單詞的首字母大寫:XxxYyyZzz【大駝峰】
- 變數名、方法名:多單詞組成時,所有單詞的首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz【小駝峰】
- 常量名:所有字母都大寫,多單詞組成時,單詞之間用下劃線連接:XXX_YYY_ZZZ
?
【注意】
- 在起名字時,為了提高可讀性,要盡量有意義,“見名知意”,
- Java采用Unicode字符集,因此識別符號也可以使用漢字宣告,但不建議使用,
package com.Java_conclusion.contact; //包名:Java_conclusion.contact
public class Grammar_Identifier { //類名:Grammar_Identifier
static final double PI = 3.1415; //類常量1
public static final double ONE_TWO_THREE = 1.23456789; //類常量2
public static void main(String [] args)
{
final int MY_YEAR = 18; //常量
int myNumber = 1001; //變數名:myNumber
System.out.println(myNumber);
//下面2種情況編譯可以通過! 但不要這要寫,可讀性差!
int mynumber1 = 1002;
System.out.println(mynumber1);
int 學號 = 1003;
System.out.println(學號);
System.out.println(hello()); //Java你好!666
}
public static int hello(){ //方法名:hello
System.out.print("Java你好!");
return 666;
}
interface USB{ //創建一個介面,介面名:USB
void start();
void stop();
}
public interface ChineseName{} //介面名:ChineseName
}

二、Java關鍵字【53個】
1、關鍵字(keyword)【51】
- 關鍵字的定義和特點
- 定義:被Java語言賦予了特殊含義,用做專門用途的字串(單詞)
- 特點:關鍵字中所有字母都為小寫
2. 保留字(reserved word)【2】
-
現有的 Java版本尚未使用,但以后版本可能會作為關鍵字使用,
-
自己命名識別符號是要避免使用這些關鍵字:goto、const
3、關鍵字分類(圖片)


true、false、null 不算關鍵字,但可以當做關鍵字使用,
4、關鍵字和保留字簡述(表格)
| 關鍵字 | 含義 | |
|---|---|---|
| 1 | abstract | 抽象類或方法 |
| 2 | assert | 用來查找內部程式錯誤 |
| 3 | boolean | 布爾型別 |
| 4 | break | 跳出一個switch或回圈 |
| 5 | byte | 8位整數型別 |
| 6 | case | switch的一個分支 |
| 7 | catch | 捕獲例外的try塊子句 |
| 8 | char | Unicode字符型別 |
| 9 | class | 定義一個型別別 |
| 10 | const | 未使用(保留字) |
| 11 | continue | 在回圈末尾繼續 |
| 12 | default | switch 的預設子句 |
| 13 | do | do/while回圈最前面的陳述句 |
| 14 | double | 雙精度浮點數型別 |
| 15 | else | if陳述句的else子句 |
| 16 | enum | 列舉型別 |
| 17 | extends | 定義一個類的父類 |
| 18 | final | 一個常量,或不能覆寫的一個類或方法 |
| 19 | finally | try塊中總會執行的部分 |
| 20 | false | 用于定義資料型別值的字面值 |
| 21 | float | 單精度浮點數型別 |
| 22 | for | 一種回圈型別 |
| 23 | goto | 未使用(保留字) |
| 24 | if | 一個條件陳述句 |
| 25 | implements | 定義一個類實作的介面 |
| 26 | import | 匯入一個包 |
| 27 | instanceof | 測驗一個物件是否為一個類的實體 |
| 28 | int | 32位整數型別 |
| 29 | interface | 一種抽象型別,其中包含可以由類實作的方法 |
| 30 | long | 64位長整數型別 |
| 31 | native | 由宿主系統實作的一個方法 |
| 32 | new | 分配一個新物件或陣列 |
| 33 | null | 一個空參考(需要說明,null 從技術上講是一個直接量,而不是關鍵字) |
| 34 | package | 包含類的一個包 |
| 35 | private | 這個特性只能由該類的方法訪問 |
| 36 | protected | 這個特性只能由該類、其子類以及同一個包中的其他類的方法訪問 |
| 37 | public | 這個特性可以由所有類的方法訪問 |
| 38 | return | 從一個方法回傳 |
| 39 | short | 16位整數型別 |
| 40 | static | 這個特性是這個類特有的,而不屬于這個類的物件 |
| 41 | strictfp | 對浮點數計算使用嚴格的規則 |
| 42 | super | 超類物件或建構式 |
| 43 | switch | —個選擇陳述句 |
| 44 | synchronized | 對執行緒而言是原子的方法或代碼塊 |
| 45 | this | 當前類的一個方法或建構式的隱含引數 |
| 46 | throw | 拋出一個例外 |
| 47 | throws | 一個方法可能拋出的例外 |
| 48 | transient | 標志非永久的資料 |
| 49 | true | 用于定義資料型別值的字面值 |
| 50 | try | 捕獲例外的代碼塊 |
| 51 | void | 指示一個方法不回傳任何值 |
| 52 | volatile | 確保一個欄位可以由多個執行緒訪問 |
| 53 | while | 一種回圈 |

三、變數
1、變數的定義和使用
變數的概念:
- 記憶體中的一個存盤區域
- 該區域的資料可以在同一型別范圍內不斷變化
- 變數是程式中最基本的存盤單元,包含變數型別、變數名和存盤的值
變數的作用:用于在記憶體中保存資料
使用變數注意:
- Java中每個變數必須先宣告,后使用
- 變數的作用域:其定義所在的一對{ }內
- 變數只有在其作用域內才有效,
- 同一個作用域內,不能定義重名的變數
//Java定義變數的格式:
資料型別 變數名 = 變數值;
public class Grammar_Variable {
public static void main(String [] args)
{
//變數的定義:變數的宣告 和 初始化分開進行
int myNumber; //變數的宣告
myNumber = 1001; //變數的賦值(初始化)
//變數的使用
System.out.println(myNumber);
//變數的定義:宣告并初始化同時進行
int myAge = 12;
//變數的使用
System.out.println(myAge);
}
}
2、變數的分類
1?? 按宣告的位置的不同
- 成員變數:在方法體外,類體內宣告的變數,
- 區域變數:在方法體內部宣告的變數,
注意:二者在初始化值方面的異同:
- 同:都有生命周期
- 異:區域變數除形參外,需顯式初始化,

2?? 按資料型別分類:
- 基本資料型別:數值型、字符型、布爾型
- 參考資料型別:類、介面、陣列

3、常見問題
- 交換2個變數的值的3種方法
//交換2個變數的值:有3種方法
int n = 10;
int m = 15;
//方法1:常常使用方法(推薦)
int temp = n;
n = m;
m = n;
//方法2:好處:不用定義臨時變數
//弊端: 相加操作可能超出存盤范圍
// 有局限性:只適合于數值型別
n = n + m; //n=25 = 10 + 15;
m = n - m; //m=10 = 25 - 15;
n = n - m; //n=15 = 25 - 10;
//方法3:使用位運算子
//有局限性:只能適合于數值型別
n = n ^ m;
m = n ^ m;
n = n ^ m;

四、資料型別
1、思維導圖 + 圖片 + 表格
對于每一種資料都定義了明確的具體資料型別(強型別語言),在記憶體中分配了不同大小的記憶體空間,
1?? 思維導圖

2?? 基本數值型別取值范圍(圖片):

- 一位元組 = 8位,即1byte = 8bit
- bit: 計算機中的最小存盤單位,byte:計算機中基本存盤單元,
2、整數型別:byte、short、int、long
Java各整數型別有固定的表數范圍和欄位長度,不受具體OS的影響,以保證java程式的可移植性,
java的整型常量默認為 int 型,宣告long型常量須后加‘l’或‘L’
java程式中變數通常宣告為int型,除非不足以表示較大的數,才使用long
@Test
public void test1() {
//1、整型:byte(1位元組 = 8bit)、short、int、long
//① byte范圍:-128 ~ 127
//② 宣告long整型變數,必須以 "l" 或 "L" 結尾
byte b1 = 12;
byte b2 = -128;
short s1 = 128;
int i1 = 1234;
long l1 = 66668888L;
System.out.println("b1=" + b1 + "\tb1=" + b2);
System.out.println("s1=" + s1 + "\ti1=" + i1 + "\tl1=" + l1);
}
3、浮點型別:float、double
與整數型別類似,Java 浮點型別也有固定的表數范圍和欄位長度,不受具體作業系統的影響,
float 取值范圍:-3.4028235E38 ~ -1.4E-45、1.4E-45 ~ 3.4028235E38
有效數字7位(或8位):前7位有效數字是真實值,第8位是估算值,可能和原始一致,可能是四舍五入上來的,
double 取值范圍:-1.7976931348623157E308 ~ -4.9E-432、4.9E-324 ~ 1.7976931348623157E308
有效數字15位(或16位):前15位有效數字是真實值,第16位是估算值,可能和原始一致,可能是四舍五入上來的 ,
浮點型常量有兩種表示形式:
- 十進制數形式:如:5.12 512.0f .512 (必須有小數點)
- 科學計數法形式:如:5.12e2 512E2 100E-2
指數形式:由兩部分組成、十進制小數形式或十進制整型常量部分和指數部分,其中指數部分是在e或E(相當于數學中冪底數 10)后跟整數階碼(即可帶符號的整數指數),例如:2E15 表示數值 2 * 1015、3.14E+1表示數值 3.14 * 1015、2E-1表示數值 2 *10-1 ,
@Test
public void test() {
//2、浮點型:float(7位有效數字)、double
//① 定義float型別變數時,變數要以 "f" 或 "F"結尾
//② float 表示的資料范圍比long大
float f1 = 66.6F;
double d1 = 88.8;
System.out.println("f1=" + f1 + "\td1=" + d1);
}
4、字符型別:char
4.1、字符char
char 型資料用來表示通常意義上“字符”(2位元組)
Java中的所有字符都使用Unicode編碼,故一個字符可以存盤一個字母,一個漢字,或其他書面語的一個字符,
char型別是可以進行運算的,因為它都對應有Unicode碼,
字符型變數的三種表現形式:
- 字符常量是用單引號(‘ ’)括起來的單個字符,例如:char c1 = ‘a’; char c2 = ‘中’; char c3 = ‘9’;
- Java中還允許使用轉義字符‘\’來將其后的字符轉變為特殊字符型常量,例如:char c3 = ‘\n’; // '\n’表示換行符
- 直接使用 Unicode 值來表示字符型常量:‘\uXXXX’,其中,XXXX代表一個十六進制整數,如:\u000a 表示 \n,
4.2、常見轉義字符
轉義字符主要用來表示那些用一般字符不便于表示的控制代碼,構成字符常量的控制字符必須用轉義字符表示,這種“控制字符”在螢屏上是不能顯示的,轉義字符雖然包含兩個或多個字符,但它只代表一個字符,轉義字符的意思是將
\后面的字符轉換成另外的意義,
| 轉義字符 | 含義(字符值) | 作用 |
|---|---|---|
\' | 單撇號 | 輸出單撇號 ' |
\" | 雙撇號 | 輸出雙撇號" |
\? | 問號 | 輸出問號字符? |
\\ | 反斜線 | 輸出反斜線字符\ |
\b | 退格(backspace) | 將游標當前位置后退一個字符 |
\n | 換行 | 將游標當前位置移動到下一行的開頭 |
\t | 水平制表符 | 將游標當前位置移動到下一個Tab位置1 |
\r | 回車 | 將游標當前位置移動到本行的開頭0 |
@Test
public void test4() {
//3、字符型:char(1字符=2位元組=16位)
//① 定義char型變數,通常使用一對 '' ,內部只能寫一個字符
char c1 = 'a';
char c2 = '1';
char c3 = '中';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
//② 表示方式:1、宣告一個字符 2、轉義字符 3、直接使用 Unicode 值來表示字符常量
char c4 = '\n';
char c5 = '\t';
char c6 = '\u0043'; //大寫字母C
System.out.println("Hello" + c5 + "World!" + c4);
System.out.println(c6);
}
5、布爾型別:boolean
boolean 型別用來判斷邏輯條件,一般用于程式流程控制
- if條件控制陳述句;
- while回圈控制陳述句;
- do-while回圈控制陳述句;
- for回圈控制陳述句
boolean型別資料只允許取值true和false,無null,
- 不可以使用0或非 0 的整數替代false和true
- Java虛擬機中沒有任何供boolean值專用的位元組碼指令,Java語言表達所操作的boolean值,在編譯之后都使用java虛擬機中的int資料型別來代替:true用1表示,false用0表示,
@Test
public void test4() {
//4、布爾型:boolean
//① 只能取兩個值:true 或 false
//② 常常在條件判斷、回圈結構中使用
//如:if(0):錯誤 if(1 == 1):對
boolean bb1 = true;
System.out.println("布爾型:"+ bb1);
boolean isMarried = true;
if(isMarried) {
System.out.println("很遺憾,你就不能參加單身party了!");
}else {
System.out.println("你可以多談談女朋友!");
}
}
6、ASCII 碼
- 在計算機內部,所有資料都使用二進制表示,每一個二進制位(bit)有 0 和 1 兩種狀態,因此 8 個二進制位就可以組合出 256 種狀態,這被稱為一個位元組(byte),一個位元組一共可以用來表示 256 種不同的狀態,每一個狀態對應一個符號,就是 256 個符號,從0000000 到 11111111,
- ASCII碼:上個世紀60年代,美國制定了一套字符編碼,對英語字符與二進制位之間的關系,做了統一規定,這被稱為ASCII碼,ASCII碼一共規定了128個字符的編碼,比如空格“SPACE”是32(二進制00100000),大寫的字母A是65(二進制01000001),這128個符號(包括32個不能列印出來的控制符號),只占用了一個位元組的后面7位,最前面的1位統一規定為0,
- 缺點:不能表示所有字符,相同的編碼表示的字符不一樣:比如,130在法語編碼中代表了é,在希伯來語編碼中卻代表(?) 了字母Gimel

7、Unicode 編碼
- 亂碼:世界上存在著多種編碼方式,同一個二進制數字可以被解釋成不同的符號,因此,要想打開一個文本檔案,就必須知道它的編碼方式,否則用錯誤的編碼方式解讀,就會出現亂碼,
- Unicode:一種編碼,將世界上所有的符號都納入其中,每一個符號都給予一個獨一無二的編碼,使用 Unicode 沒有亂碼的問題,
- Unicode 的缺點:Unicode 只規定了符號的二進制代碼,卻沒有規定這個二進制代應該如何存盤:無法區別 Unicode 和 ASCII:計算機無法區分三個位元組表示一個符號還是分別表示三個符號,另外,我們知道,英文字母只用一個位元組表示就夠了,如果unicode統一規定,每個符號用三個或四個位元組表示,那么每個英文字母前都必然有二到三個位元組是0,這對于存盤空間來說是極大的浪費,
8、UTF-8
- UTF-8 是在互聯網上使用最廣的一種 Unicode 的實作方式,
- UTF-8 是一種變長的編碼方式,它可以使用 1-6 個位元組表示一個符號,根據不同的符號而變化位元組長度,
- UTF-8的編碼規則:
- 對于單位元組的UTF-8編碼,該位元組的最高位為0,其余7位用來對字符進行編碼(等同于ASCII碼),
- 對于多位元組的UTF-8編碼,如果編碼包含 n 個位元組,那么第一個位元組的前 n 位為1,第一個位元組的第 n+1 位為0,該位元組的剩余各位用來對字符進行編碼,在第一個位元組之后的所有的位元組,都是最高兩位為"10",其余6位用來對字符進行編碼,
9、字串型別String
應用型別有3類:類,陣列,介面(這些參考型別的默認值都是null)
- 字串型別:String
- String屬于參考資料型別,翻譯為:字串
- 宣告String型別變數時,使用雙引號: ""
- 一個字串可以串接另一個字串,也可以串接其他資料型別
String name = "Star";
public class Grammar_String {
public static void main(String [] args)
{
String s1 = "Hello World!";
System.out.println(s1);
String s2 = "a";
String s3 = ""; //空
System.out.println(s2);
System.out.println(s3);
//char c = ''; //編譯不能通過
//---------------------------------
int number = 1001;
String numberStr = "學號:";
String info = numberStr + number; // + 連接運算
boolean b1 = true;
String info1 =info + b1; //連接運算 info:資訊(information)
System.out.println(info1);
//練習1
char c = 'a';
int num = 10;
String str = "Hello";
System.out.println(c + num + str);
System.out.println(c + str + num);
System.out.println(c + (num + str));
System.out.println((c + num) + str);
System.out.println(str + num + c);
//練習二
System.out.println( (int)'\t' ); //9
System.out.println( (int)'*' ); //42
System.out.println("* *");
System.out.println('*' + '\t' + '*'); //42+9+42
System.out.println('*' + "\t" + '*');
System.out.println('*' + '\t' + "*"); //42+9
System.out.println('*' + ('\t' + "*"));
}
}

五、Scanner類輸入與輸出
1、輸入與輸出
//如何從鍵盤獲取不同型別的變數
import java.util.Scanner //導包
Scanner scan = new Scanner(System.in); //Scanner的實體化(打開掃描儀)
String name = scan.next();
int age = scan.nextInt();
//輸出
System.out.println();//輸出內容并換行
System.out.printf();//輸出內容不換行
2、Scanner類的使用
具體實作步驟:
- 導包: import java.util.Scanner
- Scanner的實體化:Scanner scan = new Scanner(System.in);
- 呼叫 Scanner類 的相關方法:next() / nextXxx ,獲取指定型別變數
注意:需要根據相應的方法,來輸入指定型別的值,如果輸入的資料型別與要的型別不匹配時, 會報例外: InputMisMatchException,導致程式終止,
//第一步:導包 import java.util.Scanner;
import java.util.Scanner;
public class Java1_VariableScanner {
public static void main(String [] args)
{
//第二步:Scanner的實體化
// scan 用戶自已定義
Scanner scan = new Scanner(System.in);
//第三步:呼叫Scanner類的相關方法
//1、字串【特殊】
System.out.println("請輸入你的姓名:"); //輸入123也對
String name = scan.next();
System.out.println(name);
//2、字符:【特殊】
//注意:對于char型的獲取,Scanner沒有提供相關的方法,只能獲取一個字串
System.out.println("請輸入你的性別:(男/女)");
String gender = scan.next(); //gender:性別
char genderChar = gender.charAt(0); //獲取索引為0位置上的字符
System.out.println(genderChar);
//3、整型【nextInt】
System.out.println("請輸入你的芳齡:"); //輸入浮點型18.8會報錯
int age = scan.nextInt();
System.out.println(age);
//4、浮點型【netDobule】
System.out.println("請輸入你的體重:"); //輸入整型100不會報錯
double weight = scan.nextDouble();
System.out.println(weight);
//5、布爾型【nextBoolean】
System.out.println("你是否相中我了呢?(true/false)");
boolean islove = scan.nextBoolean();
System.out.println(islove);
}
}

六、格式化輸出 printf
我們一般會使用轉義字符來控制輸出的格式,對于轉義字符可以調整輸出內容的格式,如果使用格式化輸出printf可以更好的控制輸出的內容格式,
System.out.println("hello\tworld");
System.out.printf("hello\tworld\n");
?? 運 行 ??

1、保留xx位小數
格式化輸出:保留xx位小數
@Test
public void test3() {
float a = 9.55f;
float b = 8.8f;
float c = 6f;
System.out.println("從小到大排序后輸出結果:");
System.out.printf("只保留整數: %.0f %.0f %.0f\n",a,b,c); //結果遵循四舍五入
System.out.printf("保留一位小數: %.1f %.1f %.1f\n",a,b,c);
System.out.printf("保留不同位小數:%.0f %.1f %.2f\n",a,b,c);
}
?? 運 行 ??

2、楊輝三角(資料靠左或右)
格式化輸出:楊輝三角(資料靠左或右)
System.out.printf("%-5d",a);// %-m.nd形式
//m資料總寬度,n小數位數,
//負號:輸出數字或字符靠左
@Test
public void test2(){
int[][] yangHui = new int[10][];
for(int i = 0;i < yangHui.length;i++){
yangHui[i] = new int[i + 1];
yangHui[i][0] = yangHui[i][i] = 1;
for(int j = 1;j < yangHui[i].length - 1;j++){
yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];
}
}
for(int[] arr : yangHui){
for(int a : arr){
// System.out.print(a + "\t");
System.out.printf("%-5d",a);// %-m.nd形式
}
System.out.println();
}
?? 運 行 ??
- %-5d 資料靠左
- %5d 資料靠右


最后推薦文章:
- 電腦常用快捷鍵和操作你值得擁有!
- 相見恨晚的強大截圖軟體:Snipaste
😜 相 見 就 是 【 猿 分 】 🐒
.
👀 感謝您閱讀完此文章 👀
.
? 希望能夠對你有所幫助 🎯
.
? 如果文章中有錯誤的地方請指正 ??
.
💪 感謝支持,一起加油,共同進步 🏃

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/301026.html
標籤:java
