JavaSE從零開始到精通

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 存在的優勢? ? ? ??

  1. 功能豐富的編輯器

    • IDEA提供了一個強大的代碼編輯器,支持語法高亮、代碼補全、代碼導航等功能,使得開發人員可以高效地編寫和編輯代碼。
  2. 智能代碼分析和重構

    • IDEA集成了豐富的代碼分析工具,可以幫助開發人員進行代碼質量分析、代碼格式化、自動修復代碼問題等。它還支持多種重構操作,如重命名、提取方法、提取變量等,有助于改進代碼結構和可讀性。
  3. 強大的調試功能

    • IDEA提供了直觀的調試界面和豐富的調試工具,支持斷點設置、表達式監視、變量查看等功能,幫助開發人員快速定位和解決代碼中的問題。
  4. 集成版本控制系統

    • IDEA支持集成多種版本控制系統,如Git、SVN等,使得團隊協作開發更加高效。它提供了版本控制工具的直觀界面和操作,方便開發人員管理代碼版本和進行代碼的提交、更新等操作。
  5. 豐富的插件生態系統

    • IDEA擁有豐富的插件支持,開發人員可以根據自己的需要安裝各種插件,擴展IDE的功能,支持更多的語言、框架和技術棧。
  6. 跨平臺支持

    • IDEA可以在多種操作系統上運行,包括Windows、macOS和Linux,為開發人員提供了跨平臺的開發環境。
  7. 專注于開發者體驗

    • 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. 數據類型

????????數據類型的作用: 程序把數據進行分類,為了更好的管理數據,并在內存中操作和存儲。

基本數據類型

  1. 整數類型)

    • byte:8位有符號整數,取值范圍為 -128 到 127。
    • short:16位有符號整數,取值范圍為 -32,768 到 32,767。
    • int:32位有符號整數,取值范圍為 -2^31 到 2^31 - 1。
    • long:64位有符號整數,取值范圍為 -2^63 到 2^63 - 1。
  2. 浮點數類型

    • float:32位單精度浮點數,用于存儲小數,取值范圍和精度較?double?小。
    • double:64位雙精度浮點數,用于存儲小數,通常推薦使用它,因為它提供更高的精度。
  3. 字符類型

    ?1.char:16位無符號Unicode字符,用于存儲單個字符。
  4. 布爾類型

    ?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. 自動類型轉換,要想了解這兩個概念還應該掌握數據類型的范圍,因為這個
是判斷是強轉還是自轉的關鍵。
????????byte < short(char) < int < long < float < duble????????
????????1. 自動類型轉換

語法格式:

? ? ? ? 2. 強制類型轉換(可能發生數據溢出)

語法格式:

? ? ? ? ?3. 運算時的類型轉換

如果一個表達式中,包含多個不同的數據類型,最后運算獲得的值是最大范圍的數據類型。

對于 byte char short 會自動轉換為int , float 會自動轉換為double

7. 標識符

在Java中,標識符是用來命名變量、方法、類等程序元素的名稱。標識符必須遵循以下規則:

  1. 字符集:標識符可以由字母、數字、美元符號($)和下劃線(_)組成。
  2. 命名規則
    • 第一個字符必須是字母(a-z, A-Z)、美元符號($)或下劃線(_)。
    • 后續字符可以是字母、數字、美元符號($)或下劃線(_)。
  3. 大小寫敏感:Java中的標識符是大小寫敏感的,因此?myVar?和?MyVar?是不同的標識符。
  4. 關鍵字:不能使用Java的關鍵字(reserved words)作為標識符,例如?intclasspublic?等。
  5. 長度限制:標識符的長度理論上沒有限制,但是實際上應該根據編碼規范保持適當的長度以保證代碼的可讀性。

命名約定(命名規范)

雖然在語法上允許使用幾乎任意合法的標識符,但是為了提高代碼的可讀性和可維護性,通常建議遵循一些命名約定:

  • 駝峰命名法:對于變量名和方法名,推薦使用小駝峰命名法(camelCase),例如?myVariableName
  • 帕斯卡命名法:對于類名,推薦使用大駝峰命名法(PascalCase),例如?MyClassName
  • 全部大寫:對于常量,使用全部大寫字母,單詞之間用下劃線分隔,例如?MAX_SIZE

8. 運算符?

1. 算術運算符

用于執行基本的數學運算,如加減乘除等。

  • +:加法運算符,也用于字符串連接。
  • -:減法運算符。
  • *:乘法運算符。
  • /:除法運算符。
  • %:取模(取余)運算符,返回除法的余數。

2. 關系運算符

用于比較兩個值之間的關系,返回布爾值 truefalse

  • ==:檢查兩個操作數是否相等。
  • !=:檢查兩個操作數是否不相等。
  • >:檢查左操作數是否大于右操作數。
  • <:檢查左操作數是否小于右操作數。
  • >=:檢查左操作數是否大于或等于右操作數。
  • <=:檢查左操作數是否小于或等于右操作數。

3. 邏輯運算符

用于在布爾表達式之間執行邏輯運算,返回布爾值。

  • &&:短路邏輯與運算符,如果兩個操作數都為?true,則結果為?true
  • ||:短路邏輯或運算符,如果兩個操作數中至少有一個為?true,則結果為?true
  • !:邏輯非運算符,用于反轉操作數的布爾值。

?擴展:對于& 和 && ,| 和 | |??是存在區別的

. 短路與非短路

  • &&(短路與)

    • 如果第一個操作數為?false,則不會計算第二個操作數,直接返回?false
    • 只有當第一個操作數為?true?時,才會計算并判斷第二個操作數。
    • 因此,&&?在判斷第一個操作數為?false?時,可以避免不必要的計算,提高了執行效率。
  • &(非短路與)

    • 不論第一個操作數的值是?true?還是?false,都會對第二個操作數進行計算和判斷。
    • 即使第一個操作數為?false,也會對第二個操作數進行求值。

4. 賦值運算符

用于給變量賦值。

  • =:簡單的賦值運算符,將右操作數的值賦給左操作數。
  • +=-=*=/=%=:組合賦值運算符,用于將算術運算結果賦給左操作數。?

5. 位運算符

用于對整數類型的數據進行位級操作。

  • &:按位與。
  • |:按位或。
  • ^:按位異或。
  • ~:按位取反。
  • <<:左移運算符。
  • >>:帶符號右移運算符。
  • >>>:無符號右移運算符。

6. 其他運算符

  • 條件運算符??::也稱為三元運算符,根據條件的真假返回兩個操作數中的一個。
  • 實例化運算符?new:用于創建對象實例。
  • 類型運算符?instanceof:用于檢查對象是否是某個類的實例。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45720.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45720.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45720.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LVS+Keepalive高可用

1、keepalive 調度器的高可用 vip地址主備之間的切換&#xff0c;主在工作時&#xff0c;vip地址只在主上&#xff0c;vip漂移到備服務器。 在主備的優先級不變的情況下&#xff0c;主恢復工作&#xff0c;vip會飄回到住服務器 1、配優先級 2、配置vip和真實服務器 3、主…

我想做信號通路分析,但我就是不想學編程

“我想做信號通路分析&#xff0c;但我就是不想學編程。” “我又不是生信狗&#xff0c;學代碼會死。” “你們這些做生信的&#xff0c;整天把數據分析搞得神神秘秘&#xff0c;不就是怕被人搶飯碗而已嘛。” “這都沒分析出我想要的結果&#xff0c;不靠譜。” “你們做…

【自學安全防御】二、防火墻NAT智能選路綜合實驗

任務要求&#xff1a; &#xff08;銜接上一個實驗所以從第七點開始&#xff0c;但與上一個實驗關系不大&#xff09; 7&#xff0c;辦公區設備可以通過電信鏈路和移動鏈路上網(多對多的NAT&#xff0c;并且需要保留一個公網IP不能用來轉換) 8&#xff0c;分公司設備可以通過總…

使用Docker創建并運行一個create-react-app應用(超簡單)

創建并運行一個使用 Create React App (CRA) 創建的應用程序的 Docker 容器涉及幾個步驟。以下是一個詳細的過程&#xff0c;包括創建一個簡單的 React 應用、編寫 Dockerfile、構建鏡像以及運行容器。 步驟 1: 創建一個新的 React 應用 如果你還沒有一個 React 應用&#xf…

Java爬蟲安全策略:防止TikTok音頻抓取過程中的請求被攔截

摘要 在當今互聯網時代&#xff0c;數據采集已成為獲取信息的重要手段。然而&#xff0c;隨著反爬蟲技術的不斷進步&#xff0c;爬蟲開發者面臨著越來越多的挑戰。本文將探討Java爬蟲在抓取TikTok音頻時的安全策略&#xff0c;包括如何防止請求被攔截&#xff0c;以及如何提高…

RK3568 安卓12 EC20模塊NOCONN沒有ip的問題(已解決)

從網上東拼西湊找了不少教程&#xff0c;但是里面沒有提到rillib.so需要替換&#xff0c;替換掉就可以上網了&#xff0c;系統也有4G圖標了。 注意&#xff0c;這個rillib.so是移遠提供的。把他們提供的文件放到rk3568_android_sdk/vendor/rockchip/common/phone/lib下&#x…

Andriod Stdio新建Kotlin的Jetpack Compose簡單項目

1.選擇 No Activity 2.選擇kotlin 4.右鍵選擇 在目錄MyApplication下 New->Compose->Empty Project 出現下面的畫面 Finish 完成

C++——類和對象(中)

文章目錄 一、類的默認成員函數二、構造函數三、析構函數四、拷?構造函數五、賦值運算符重載1. 運算符重載2. 賦值運算符重載 六、取地址運算符重載const成員函數取地址運算符重載 七、應用&#xff1a;?期類實現Date.hDate.cpptest.cpp 一、類的默認成員函數 默認成員函數就…

技術成神之路:設計模式(七)狀態模式

1.介紹 狀態模式&#xff08;State Pattern&#xff09;是一種行為設計模式&#xff0c;它允許一個對象在其內部狀態改變時改變其行為。這個模式將狀態的相關行為封裝在獨立的狀態類中&#xff0c;并將不同狀態之間的轉換邏輯分離開來。 2.主要作用 狀態模式的主要作用是讓一個…

數據結構—鏈式二叉樹-C語言

代碼位置&#xff1a;test-c-2024: 對C語言習題代碼的練習 (gitee.com) 一、前言&#xff1a; 在現實中搜索二叉樹為常用的二叉樹之一&#xff0c;今天我們就要通過鏈表來實現搜索二叉樹。實現的操作有&#xff1a;建二叉樹、前序遍歷、中序遍歷、后序遍歷、求樹的節點個數、求…

SMU Summer 2024 Contest Round 4

SMU Summer 2024 Contest Round 4 2024.7.16 9:00————11:00 過題數3/7 補題數6/7 Made Up H and V Moving Piece Sum of Divisors Red and Green Apples Rem of Sum is Num Keep Connect A - Made Up 題解&#xff1a; 給定三個數組a&#xff0c;b&#xff0c;c&#xf…

MySQL日期和時間相關函數

目錄 1. 獲取當前時間和日期 2. 獲取當前日期 3. 獲取當前時間 4. 獲取單獨的年/月/日/時/分/秒 5. 添加時間間隔 date_add ( ) 6. 格式化日期 date_format ( ) 7. 字符串轉日期 str_to_date () 8. 第幾天 dayofxx 9. 當月最后一天 last_day ( ) 10. 日期差 datedif…

H. Beppa and SwerChat【雙指針】

思路分析&#xff1a;運用雙指針從后往前掃一遍&#xff0c;兩次分別記作數組a&#xff0c;b&#xff0c;分別使用雙指針i和j來掃&#xff0c;如果一樣就往前&#xff0c;如果不一樣&#xff0c;i–,ans #include<iostream> #include<cstring> #include<string…

SQL server 練習題2

課后作業 作業 1&#xff1a;自己查找方法&#xff0c;將 homework_1.xls 文件數據導入到 SQLServer 的 homework 數據庫中。數據導入完成后&#xff0c;把表名統一改為&#xff1a;外賣表 如下所示&#xff1a; 作業 2&#xff1a;找出所有在 2020 年 5 月 1 日至 5 月 31 …

Zookeeper之CAP理論及分布式一致性算法

CAP理論 CAP理論告訴我們&#xff0c;一個分布式系統不可能同時滿足以下三種 一致性&#xff08;C:consistency&#xff09;可用性&#xff08;A:Available&#xff09;分區容錯性&#xff08;P:Partition Tolerance&#xff09; 這三個基本要求&#xff0c;最多只能同時滿足…

python 語法學習 day2

python有七大數據類型, 數據類型轉換, 多變量賦值與print間隔, split函數, int用法總結python有七大數據類型&#xff1a; &#xff08;1&#xff09;數字&#xff08;Number&#xff09;&#xff1a;int(整型&#xff0c;長整型)&#xff0c;float(浮點型)&#xff0c;com…

部署k8s 1.28.9版本

繼上篇通過vagrant與virtualBox實現虛擬機的安裝。筆者已經將原有的vmware版本的虛擬機卸載掉了。這個場景下&#xff0c;需要重新安裝k8s 相關組件。由于之前寫的一篇文章本身也沒有截圖。只有命令。所以趁著現在。寫一篇&#xff0c;完整版帶截圖的步驟。現在行業這么卷。離…

SpringBoot中常用的注解及其用法

1. 常用類注解 RestController和Controller是Spring中用于定義控制器的兩個類注解. 1.1 RestController RestController是一個組合類注解,是Controller和ResponseBody兩個注解的組合,在使 用 RestController 注解標記的類中&#xff0c;每個方法的返回值都會以 JSON 或 XML…

【Android安全】Ubuntu 下載、編譯 、刷入Android-8.1.0_r1

0. 環境準備 Ubuntu 16.04 LTS&#xff08;預留至少95GB磁盤空間&#xff0c;實測占94.2GB&#xff09; Pixel 2 XL 要買歐版的&#xff0c;不要美版的。 歐版能解鎖BootLoader、能刷機。 美版IMEI里一般帶“v”或者"version"&#xff0c;這樣不能解鎖BootLoader、…

網絡安全-網絡安全及其防護措施2

6.安全設計和日志 安全審計 安全審計是對系統和網絡活動進行檢查和記錄的過程&#xff0c;確保合規性和安全性。審計過程可以幫助發現潛在的安全漏洞和違規行為&#xff0c;并驗證系統配置和操作的正確性。 定期審計 定義&#xff1a;定期檢查系統和網絡的安全配置和活動記錄…