1.前置知識
- JVM:java virtrual machine, java虛擬機, 專門用于執行java代碼的一款軟件。
- JRE:java runtime enviroment, java運行時環境, java官方提供的核心類庫. jre中包含了核心類庫和jvm。
- JDK: java development kit, java開發工具包, javac.exe, java.exe... jdk中包含了開發工具和jre。
2.? 第一個程序 “Hello Word”
? ? ? ? 2.1 編寫.java源代碼文件
? ? ? ?
public class HelloWord{public static void main(String[] args){System.out.println("你好");}
}
? ? ? ? 2.2 通過javac 編譯.java文件
????????" javac " 是 Java 編程語言的編譯器命令。在Java開發中,javac命令用于將Java源代碼文件(.java文件)編譯成Java字節碼文件(.class文件),這些字節碼文件可以在Java虛擬機(JVM)上運行。
打開cmd,切換到.java文件,所在的目錄,執行javac命令。
執行完畢后,會在當前目錄生成class文件,
? ? ? ? 2.3 通過java.exe 運行程序(這里執行的是編譯好的class文件)
輸入完畢后,會返回對應的結果。
3. 集成開發環境IDEA
? ? ? ? 3.1 介紹
?????????IntelliJ IDEA是一款功能強大的集成開發環境,被廣泛認為是Java開發的首選工具之一,同時也支持多種其他語言和技術的開發,為開發人員提供了高效、智能和友好的開發體驗。
? ? ? ? ?3.2 存在的優勢? ? ? ??
-
功能豐富的編輯器:
- IDEA提供了一個強大的代碼編輯器,支持語法高亮、代碼補全、代碼導航等功能,使得開發人員可以高效地編寫和編輯代碼。
-
智能代碼分析和重構:
- IDEA集成了豐富的代碼分析工具,可以幫助開發人員進行代碼質量分析、代碼格式化、自動修復代碼問題等。它還支持多種重構操作,如重命名、提取方法、提取變量等,有助于改進代碼結構和可讀性。
-
強大的調試功能:
- IDEA提供了直觀的調試界面和豐富的調試工具,支持斷點設置、表達式監視、變量查看等功能,幫助開發人員快速定位和解決代碼中的問題。
-
集成版本控制系統:
- IDEA支持集成多種版本控制系統,如Git、SVN等,使得團隊協作開發更加高效。它提供了版本控制工具的直觀界面和操作,方便開發人員管理代碼版本和進行代碼的提交、更新等操作。
-
豐富的插件生態系統:
- IDEA擁有豐富的插件支持,開發人員可以根據自己的需要安裝各種插件,擴展IDE的功能,支持更多的語言、框架和技術棧。
-
跨平臺支持:
- IDEA可以在多種操作系統上運行,包括Windows、macOS和Linux,為開發人員提供了跨平臺的開發環境。
-
專注于開發者體驗:
- JetBrains以開發者體驗為核心設計理念,不斷優化IDEA的性能、穩定性和用戶界面,提供舒適的開發環境。
? ? ? ? ?3.3 快捷鍵介紹
- Ctrl + D : 快速復制當前行
- Ctrl + B?: 源碼跟蹤
- Ctrl + Shift + Z?: 前進
- Ctrl + Shift + ↑?: 代碼向上移動一行
- Ctrl + Shift + ↓?: 代碼向下移動一行
下面兩個是重點對于跟蹤源碼的時候可以快速切換類關系: - Ctrl + Alt + ←?: 回到光標上一次所在的位置
- Ctrl + Alt + →?: 光標移動到下一次的位置
- Alt + 回車 : 選擇提示解決報錯
- Ctrl + Alt + L?: 配合 Ctrl + A 使用可以快速格式化全部代碼。
- Ctrl + Alt + M : 選中代碼抽取成方法
- Ctrl + Alt + U?: 查看當前類的類圖
- Ctrl + Alt + T?: 可以使用語句包圍所選代碼
?
擴展: 包的名稱一般是公司的域名倒著寫,主要為了防止代碼包名和文件名均相同而進行覆蓋。
4.? 字面量
概念:生活中的數據在程序中的書寫方式。
分類:
- 整數和小數:均和數學相同
- 字符: 'w'
- 字符串:"你好"
- 布爾:true | false
- 空:null
- 實體:對象(類) 也可以叫做javabean
5. 數據類型
????????數據類型的作用: 程序把數據進行分類,為了更好的管理數據,并在內存中操作和存儲。
基本數據類型
-
整數類型):
byte
:8位有符號整數,取值范圍為 -128 到 127。short
:16位有符號整數,取值范圍為 -32,768 到 32,767。int
:32位有符號整數,取值范圍為 -2^31 到 2^31 - 1。- long:64位有符號整數,取值范圍為 -2^63 到 2^63 - 1。
-
浮點數類型:
- float:32位單精度浮點數,用于存儲小數,取值范圍和精度較?
double
?小。 - double:64位雙精度浮點數,用于存儲小數,通常推薦使用它,因為它提供更高的精度。
- float:32位單精度浮點數,用于存儲小數,取值范圍和精度較?
-
字符類型:
?1.char:16位無符號Unicode字符,用于存儲單個字符。 -
布爾類型:
?1.boolean:表示邏輯值的數據類型,只有兩個取值:true
?和?false
。
引用數據類型
????????引用數據類型包括所有的類(Class)、接口(Interface)、數組(Array)等。它們是通過new關鍵字在堆內存中動態創建的對象。引用數據類型的變量存儲的是對象的引用(內存地址),而不是對象本身。
擴展:float表示的數據范圍要比long大!!!
看完你可能就會存在疑問了,long 不是 8 個字節嗎,float是4個字節,為什么會比他大呢?
為什么會這樣呢?
????????我們首先需要看float的組成結構了。
浮點數表示格式:浮點數 N = M × R^E,其中 R 為基數,E 為階碼,M 為尾數。
例如,在二進制科學計數法中,1.2345 × 10^2,其中 1.2345 為尾數,10 為基數,2 為階碼。另
外,0.0101 × 2^-10,其中 0.0101 為尾數,2 為基數,-10 為階碼。這種涂點數格式表達了浮點數
在計算機中的表示,尾數決定了浮點數的精度,階碼則決定了浮點數的范圍和小數點實際位置。
?6. 變量
? ? ? ? 6.1 變量的聲明和賦值
????????
? ? ? ? 6.2 變量的作用域
? ? ? ? ? 變量的作用域位于外側最近 { 開始,最外側最近 } 死亡。
?
注意事項:
- ? ? ? ? 局部變量需要先賦值再使用
- ? ? ? ? 同一作用域中,不能出現同名變量
? ? ? ? 6.3 變量的類型轉換?
????????1. 自動類型轉換
語法格式:
? ? ? ? 2. 強制類型轉換(可能發生數據溢出)
語法格式:
? ? ? ? ?3. 運算時的類型轉換
如果一個表達式中,包含多個不同的數據類型,最后運算獲得的值是最大范圍的數據類型。
對于 byte char short 會自動轉換為int , float 會自動轉換為double
7. 標識符
在Java中,標識符是用來命名變量、方法、類等程序元素的名稱。標識符必須遵循以下規則:
- 字符集:標識符可以由字母、數字、美元符號($)和下劃線(_)組成。
- 命名規則:
- 第一個字符必須是字母(a-z, A-Z)、美元符號($)或下劃線(_)。
- 后續字符可以是字母、數字、美元符號($)或下劃線(_)。
- 大小寫敏感:Java中的標識符是大小寫敏感的,因此?
myVar
?和?MyVar
?是不同的標識符。 - 關鍵字:不能使用Java的關鍵字(reserved words)作為標識符,例如?
int
、class
、public
?等。 - 長度限制:標識符的長度理論上沒有限制,但是實際上應該根據編碼規范保持適當的長度以保證代碼的可讀性。
命名約定(命名規范)
雖然在語法上允許使用幾乎任意合法的標識符,但是為了提高代碼的可讀性和可維護性,通常建議遵循一些命名約定:
- 駝峰命名法:對于變量名和方法名,推薦使用小駝峰命名法(camelCase),例如?
myVariableName
。 - 帕斯卡命名法:對于類名,推薦使用大駝峰命名法(PascalCase),例如?
MyClassName
。 - 全部大寫:對于常量,使用全部大寫字母,單詞之間用下劃線分隔,例如?
MAX_SIZE
。
8. 運算符?
1. 算術運算符
用于執行基本的數學運算,如加減乘除等。
+
:加法運算符,也用于字符串連接。-
:減法運算符。*
:乘法運算符。/
:除法運算符。%
:取模(取余)運算符,返回除法的余數。
2. 關系運算符
用于比較兩個值之間的關系,返回布爾值 true
或 false
。
==
:檢查兩個操作數是否相等。!=
:檢查兩個操作數是否不相等。>
:檢查左操作數是否大于右操作數。<
:檢查左操作數是否小于右操作數。>=
:檢查左操作數是否大于或等于右操作數。<=
:檢查左操作數是否小于或等于右操作數。
3. 邏輯運算符
用于在布爾表達式之間執行邏輯運算,返回布爾值。
&&
:短路邏輯與運算符,如果兩個操作數都為?true
,則結果為?true
。||
:短路邏輯或運算符,如果兩個操作數中至少有一個為?true
,則結果為?true
。!
:邏輯非運算符,用于反轉操作數的布爾值。
?擴展:對于& 和 && ,| 和 | |??是存在區別的
. 短路與非短路
-
&&
(短路與):- 如果第一個操作數為?
false
,則不會計算第二個操作數,直接返回?false
。 - 只有當第一個操作數為?
true
?時,才會計算并判斷第二個操作數。 - 因此,
&&
?在判斷第一個操作數為?false
?時,可以避免不必要的計算,提高了執行效率。
- 如果第一個操作數為?
-
&
(非短路與):- 不論第一個操作數的值是?
true
?還是?false
,都會對第二個操作數進行計算和判斷。 - 即使第一個操作數為?
false
,也會對第二個操作數進行求值。
- 不論第一個操作數的值是?
4. 賦值運算符
用于給變量賦值。
=
:簡單的賦值運算符,將右操作數的值賦給左操作數。+=
、-=
、*=
、/=
、%=
:組合賦值運算符,用于將算術運算結果賦給左操作數。?
5. 位運算符
用于對整數類型的數據進行位級操作。
&
:按位與。|
:按位或。^
:按位異或。~
:按位取反。<<
:左移運算符。>>
:帶符號右移運算符。>>>
:無符號右移運算符。
6. 其他運算符
- 條件運算符?
?:
:也稱為三元運算符,根據條件的真假返回兩個操作數中的一個。 - 實例化運算符?
new
:用于創建對象實例。 - 類型運算符?
instanceof
:用于檢查對象是否是某個類的實例。