Java從入門到“放棄”(精通)之旅——運算符③

🌟Java從入門到“放棄”(精通)之旅🚀:運算符深度解析

引言:運算符的本質與價值

作為Java語言的核心組成部分,運算符是構建程序邏輯的基礎元素。它們不僅僅是簡單的數學符號,更是程序員表達計算邏輯的有力工具。本文將系統性地解析Java中的各類運算符,幫助開發者掌握其正確用法和高效實踐。

🪨一、算術運算符:精確計算的基石

基本四則運算

int a = 20;
int b = 10;System.out.println(a + b);     // 30
System.out.println(a - b);     // 10
System.out.println(a * b);     // 200
System.out.println(a / b);     // 2
System.out.println(a % b);     // 0 --->模運算相當于數學中除法的余數

關鍵點:

  • 整數除法會截斷小數部分
  • 浮點運算需顯式轉換類型
  • 取模運算(%)的適用場景分析

🔧二、自增和增量運算符:簡潔且高效的工具

自增運算符:i++/i- -

  1. 基本形式
int a = 1;
int b = a++; // b=1, a=2
int c = ++a; // c=3, a=3
  1. 關鍵區別

    • i++(后置):先返回值,后自增
    • ++i(前置):先自增,后返回值
  2. 使用規范

    • 單獨語句中優先使用i++(更符合習慣)
    • 表達式內根據語義選擇
    • 避免同一表達式多次修改同一變量
    • 現代編譯器會優化為相同機器碼
  3. 最佳實踐

    • 保持代碼可讀性優先
    • 避免復雜表達式中的嵌套使用
    • 循環結構保持簡單直觀

增量運算符:+= , -= , *= , /=

該種類型運算符操作完成后,會將操縱的結果賦值給左操作數。
注意:只有變量才能使用該運算符,常量不能使用。

int a = 1;
a += 2;                  // 相當于 a = a + 2
System.out.println(a);   // 輸出3a -= 1;                  // 相當于 a = a - 1
System.out.println(a);   // 輸出2a *= 3;                  // 相當于 a = a * 3
System.out.println(a);   // 輸出6a /= 3;                  // 相當于 a = a / 3注

記住:清晰可維護的代碼比微觀優化更重要。增量運算符應當用于簡化代碼,而非制造復雜性。

💎三、關系運算符:邏輯判斷的核心

關系運算符主要有六個: == != < > <= >=

int a = 10;
int b = 20;
// 注意:在Java中 = 表示賦值,要與數學中的含義區分
//     在Java中 == 表示相等
System.out.println(a == b);       // false
System.out.println(a != b);       // true
System.out.println(a < b);        // true
System.out.println(a > b);        // false
System.out.println(a <= b);       // true
System.out.println(a >= b);       // false

注意事項:

  • ==與equals()的本質區別
  • 引用類型比較的特殊性
  • 避免自動裝箱帶來的性能損耗

🔍四、邏輯運算符:程序員的"福爾摩斯推理"

運算符現實比喻代碼示例
&&既要顏值又要才華單身 && 有錢 → 稀有物種
||顏值或才華有一個就行會Java || 會Python → 總能就業
!照妖鏡(真假互換)!禿頭 → 程序員最想要的禮物

短路求值黑科技

System.out.println(10 > 20 && 10/0 == 0); // 安全通過(機智的Java懶得算后半截)

🧮五、位運算符:高性能計算的利器

按位與 &: 如果兩個二進制位都是 1, 則結果為 1, 否則結果為 0.
int a = 10;
int b = 20;
System.out.println(a & b);

在這里插入圖片描述

按位或 |: 如果兩個二進制位都是 0, 則結果為 0, 否則結果為 1.
int a = 10;
int b = 20;
System.out.println(a | b);

在這里插入圖片描述

按位異或 ^: 如果兩個數字的二進制位相同, 則結果為 0, 相異則結果為 1
  • 異或^:相同為0,不同為1
按位取反 ~: 如果該位為 0 則轉為 1, 如果該位為 1 則轉為 0
  • 取反~:0變1,1變0

六、移位運算:速度飛起的"乘除替身"

// 權限控制系統示例
final int READ = 1 << 0;  // 0001
final int WRITE = 1 << 1; // 0010
final int EXECUTE = 1 << 2; // 0100int userPermissions = READ | WRITE;

優勢分析:

  • 內存占用極小
  • 運算效率極高
  • 適合處理標志位

🚀 性能秘籍:用移位代替乘除,CPU會給你點贊!但別移負數位——就像倒著跑步,會摔跤!

?五、條件運算符:簡潔的三目表達式

條件運算符只有一個:表達式1 ? 表達式2 : 表達式3
當 表達式1 的值為 true 時, 整個表達式的值為 表達式2 的值;
當 表達式1 的值為 false 時, 整個表達式的值為 表達式3 的值.
也是 Java 中唯一的一個 三目運算符, 是條件判斷語句的簡化寫法.

優雅的條件賦值

String result = score > 60 ? "及格" : "不及格";

使用建議:

  • 保持表達式簡潔
  • 避免嵌套使用
  • 類型一致性檢查

六、運算符優先級:避免隱蔽的錯誤

常見陷阱示例

int result = x + y >> 1; // 可能不符合預期
int result = x + (y >> 1); // 明確優先級

最佳實踐:

  • 使用括號明確意圖
  • 復雜表達式分行書寫
  • 保持代碼可讀性

結語:運算符的工程實踐

掌握運算符不僅需要理解其語法,更需要在實際開發中合理運用。建議開發者:

1. 在性能敏感場景優先使用位運算
2. 保持條件表達式的簡潔性
3. 始終考慮類型安全和運算精度
4. 通過單元測試驗證邊界條件

運算符作為Java語言的基礎構件,其正確使用直接影響代碼的質量和性能。希望本文能幫助開發者在實際工程中更加游刃有余地運用這些基礎但強大的工具。


在這里插入圖片描述
JavaSE往期專欄

  • Java從入門到“放棄”(精通)之旅——啟航①
  • Java從入門到“放棄”(精通)之旅——數據類型與變量②

在這里插入圖片描述

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

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

相關文章

【sgSpliter】自定義組件:可調整寬度、高度、折疊的分割線

sgSpliter.vue <template><!-- 注意&#xff1a;父組件position必須是relative、absolute或fixed&#xff0c;不建議直接在綁定:data后面用"{屬性}"&#xff0c;建議單獨在script中聲明data&#xff0c;避免拖拽過程重復調用 --><div :class"$…

Ningx負載均衡

Ningx負載均衡 upstream(上游)配置負載均衡1、weight&#xff08;加權輪詢&#xff09;2、ip_hash&#xff08;負載均衡&#xff09;3、url hash負載均衡4、least_conn&#xff08;最小連接負載均衡&#xff09; upstream(上游)配置負載均衡 Nginx負載均衡 參考: nginx從安裝…

一個插件,免費使用所有頂級大模型(Deepseek,Gpt,Grok,Gemini)

DeepSider是一款集成于瀏覽器側邊欄的AI對話工具&#xff0c;可免費使用所有頂級大模型 包括GPT-4o&#xff0c;Grok3,Claude 3.5 Sonnet,Claude 3.7,Gemini 2.0&#xff0c;Deepseek R1滿血版等 以極簡交互與超快的響應速度&#xff0c;完成AI搜索、實時問答、內容創作、翻譯、…

眾趣科技丨數字孿生技術,賦能交通公共設施管理數字化升級

春節假期期間&#xff08;1 月 21 日至 2 月 4 日&#xff09;&#xff0c;作為中國春節申遺成功后的首個春運&#xff0c;交通出行格外火熱&#xff0c;全社會跨區域流動量超 23 億人次&#xff0c;這一數據創下了歷史新高。 面對如此龐大的客流量&#xff0c;傳統的交通管理方…

Linux 入門五:Makefile—— 從手動編譯到工程自動化的蛻變

一、概述&#xff1a;Makefile—— 工程編譯的 “智能指揮官” 1. 為什么需要 Makefile&#xff1f; 手動編譯的痛點&#xff1a;當工程包含數十個源文件時&#xff0c;每次修改都需重復輸入冗長的編譯命令&#xff08;如gcc file1.c file2.c -o app&#xff09;&#xff0c;…

Python-Django+vue二手電子設備交易平臺功能說明

?(^_-) 上千個精美定制模板,各類成品Java、Python、PHP、Android畢設項目,歡迎咨詢。 ?(^_-) 程序開發、技術解答、代碼講解、文檔,??文末獲取源碼+數據庫+文檔?? ??軟件下載 | 實戰案例 ??文章底部二維碼,可以聯系獲取軟件下載鏈接,及項目演示視頻。 本項目…

數據庫管理工具實戰:IDEA 與 DBeaver 連接 TDengine(二)

五、DBeaver 連接 TDengine 實戰 5.1 安裝 DBeaver 下載安裝包&#xff1a;訪問 DBeaver 官方網站&#xff08;https://dbeaver.io/download/ &#xff09;&#xff0c;根據你的操作系統選擇合適的安裝包。如果是 Windows 系統&#xff0c;下載.exe 格式的安裝文件&#xff1…

Spring Boot接口返回Long類型的數據時丟失精度的全局處理

1、問題 當實體類中的字段為Long類型時&#xff0c;通過Ajax請求返回給前段&#xff0c;在js中數據會丟失精度 直接通過postman請求或通過瀏覽器請求&#xff0c;看下響應則不會丟失精度 2、處理方式 1、使用JsonSerialize注解 JsonSerialize(using ToStringSerializer.…

英偉達Llama-3.1-Nemotron-Ultra-253B-v1語言模型論文快讀:FFN Fusion

FFN Fusion: Rethinking Sequential Computation in Large Language Models 代表模型&#xff1a;Llama-3.1-Nemotron-Ultra-253B-v1 1. 摘要 本文介紹了一種名為 FFN Fusion 的架構優化技術&#xff0c;旨在通過識別和利用自然并行化機會來減少大型語言模型&#xff08;LLM…

Django學習記錄-1

Django學習記錄-1 雖然網上教程都很多&#xff0c;但是感覺自己記錄一下才屬于自己&#xff0c;之后想找也方面一點&#xff0c;文采不佳看的不爽可繞道。 參考貼 從零開始的Django框架入門到實戰教程(內含實戰實例) - 01 創建項目與app、加入靜態文件、模板語法介紹&#xff…

Python爬蟲第7節-requests庫的高級用法

目錄 前言 一、文件上傳 二、Cookies 三、會話維持 四、SSL證書驗證 五、代理設置 六、超時設置 七、身份認證 八、Prepared Request 前言 上一節&#xff0c;我們認識了requests庫的基本用法&#xff0c;像發起GET、POST請求&#xff0c;以及了解Response對象是什么。…

Python 要致富先修路

今天準備在原有基礎上重新深入學習并記錄python學習進程。 # 整體思路 不廢話&#xff1a; 階段1&#xff1a;精選入門電子教程堅持學習&#xff1b; 階段2&#xff1a;跟著教程學習代碼思維&#xff0c;做好學習筆記并構建知識庫方便以后速查&#xff1b; 階段3&#xff…

微服務無感發布實踐:基于Nacos的客戶端緩存與故障轉移機制

微服務無感發布實踐&#xff1a;基于Nacos的客戶端緩存與故障轉移機制 背景與問題場景 在微服務架構中&#xff0c;服務的動態擴縮容、滾動升級是常態&#xff0c;而服務實例的上下線需通過注冊中心&#xff08;如Nacos&#xff09;實現服務發現的實時同步。但在實際生產環境…

2025年的Android NDK 快速開發入門

十年前寫過一篇介紹NDK開發的文章《Android實戰技巧之二十三&#xff1a;Android Studio的NDK開發》&#xff0c;今天看來已經發生了很多變化&#xff0c;NDK開發變得更加容易了。下面就寫一篇當下NDK開發快速入門。 **原生開發套件 (NDK) **是一套工具&#xff0c;使開發者能…

Shell 編程之條件語句

目錄 條件測試操作 文件測試 整數值比較 字符串比較 邏輯測試 if 條件語句 if語句的結構 1、單分支 if 語句 2、雙分支 if 語句 3、多分支 if 語句 if語句應用實例 1、單分支 if 語句應用 2、雙分支 if 語句應用 3、多分支 if 語句應用 case 分支語句 case語句的結構 case語…

【模板】縮點

洛谷p3387 思路: 算法:tarjan算法 根據題意,我們只要找到一個路徑,使得最終權重最大即可,首先,根據題目可知,如果一個點在一個環上,那么我們就將這整個環都選上,題目上允許我們能夠重復走,因此,我們可以將環縮成點,將環所稱點后,就可以轉換成樹,從沒有父節點的結點開始,我們向…

js觸發隱式類型轉換的場景

JavaScript 的隱式類型轉換&#xff08;Implicit Type Coercion&#xff09;會在某些操作或上下文中自動觸發&#xff0c;將值從一種類型轉換為另一種類型。以下是常見的觸發場景&#xff1a; 1. 使用 &#xff08;寬松相等&#xff09;比較時 會嘗試將兩邊的值轉換為相同類型后…

c++將jpg轉換為灰度圖

c將jpg轉換為灰度圖 step1:添加依賴 下載這兩個文件&#xff0c;放在cpp同一目錄下&#xff0c;編譯生成 https://github.com/nothings/stb/blob/master/stb_image_write.h https://github.com/nothings/stb/blob/master/stb_image.hstep2:C:\Users\wangrusheng\source\repos…

python——正則表達式

一、簡介 在 Python 中&#xff0c;正則表達式主要通過 re 模塊實現&#xff0c;用于字符串的匹配、查找、替換等操作。 二、Python的re模塊 使用前需要導入&#xff1a; import re 三、常用方法 方法描述re.match(pattern, string)從字符串開頭匹配&#xff0c;返回第一個匹…

Soybean Admin 配置vite兼容低版本瀏覽器、安卓電視瀏覽器(飛視瀏覽器)

環境 window10 pnpm 8.15.4 node 8.15.4 vite 5.1.4 soybean admin: 1.0.0 native-ui: 2.38.0 小米電視 MIUI TV版本&#xff1a;MiTV OS 2.7.1886(穩定版) 飛視瀏覽器&#xff1a;https://www.fenxm.com/1220.html在小米電視安裝飛視瀏覽器可以去小紅書查安裝教程&#xff1a…