【從零開始java學習|第六篇】運算符的使用與注意事項

目錄

一、算術運算符

1. 基本算術運算符(二元)

2. 自增 / 自減運算符(一元)

二、類型轉換(隱式與強制)

1. 隱式轉換(自動類型轉換)

?編輯

2. 強制轉換(顯式類型轉換)

三、字符串和字符的 “+” 操作

四、賦值運算符

1. 基本賦值運算符(=)

2. 復合賦值運算符

五、關系運算符

六、邏輯運算符

1. 基本邏輯運算符(非短路)

2. 短路邏輯運算符

七、三元運算符

八、運算符優先級

九、總結


運算符是 Java 中用于執行運算的特殊符號,是程序邏輯實現的基礎。根據功能不同,Java 運算符可分為算術運算符、賦值運算符、關系運算符、邏輯運算符、三元運算符等,且各類運算符存在明確的優先級規則。本文將系統總結各類運算符的特性、使用場景及注意事項。

一、算術運算符

算術運算符用于執行基本的數學運算,包括二元運算符(需兩個操作數)和一元運算符(需一個操作數)。

1. 基本算術運算符(二元)

運算符功能示例說明
+加法3 + 5 = 8數字相加或字符串 / 字符拼接(見后文)
-減法10 - 4 = 6數字相減
*乘法2 * 6 = 12數字相乘
/除法7 / 2 = 3整數除法取商(非四舍五入);浮點數除法正常計算(7.0 / 2 = 3.5
%取模(余)7 % 2 = 1結果符號與被除數一致(-7 % 2 = -17 % -2 = 1

2. 自增 / 自減運算符(一元)

用于操作數自身加 1 或減 1,分為前綴(先運算后使用)和后綴(先使用后運算)兩種形式。

運算符功能前綴示例(++a)后綴示例(a++)
++自增(+1)int a=3; int b=++a;?→?a=4, b=4int a=3; int b=a++;?→?a=4, b=3
--自減(-1)int a=3; int b=--a;?→?a=2, b=2int a=3; int b=a--;?→?a=2, b=3

注意:自增 / 自減運算符僅能作用于變量(如5++為錯誤寫法),且在復雜表達式中需注意優先級(見后文)。

二、類型轉換(隱式與強制)

當不同數據類型的操作數參與運算時,會發生類型轉換,確保運算統一。

1. 隱式轉換(自動類型轉換)

  • 規則:小范圍類型自動轉換為大范圍類型(避免精度損失),轉換順序為:
    byte → short → int → long → float → doublechar?可轉換為?int,因字符對應 ASCII 碼)。
  • 示例
    int a = 10;  
    long b = a; // 正確:int(4字節)→ long(8字節)  
    float c = 3.14f;  
    double d = c; // 正確:float → double  
    

2. 強制轉換(顯式類型轉換)

  • 規則:大范圍類型需手動轉換為小范圍類型,語法為?(目標類型) 操作數
  • 注意:可能導致精度損失或溢出(需手動控制風險)。
  • 示例
    double a = 3.9;  
    int b = (int) a; // 結果為3(精度損失)  
    long c = 10000000000L;  
    int d = (int) c; // 結果為-2147483648(溢出,因int范圍為-2^31~2^31-1)  
    

一個練習進行記憶

三、字符串和字符的 “+” 操作

“+” 在 Java 中除算術加法外,還可用于字符串拼接或字符與其他類型的混合運算,規則如下:

  1. 字符串與任何類型拼接:結果為字符串(其他類型自動轉換為字符串)。
    示例:

    String s = "age: " + 18; // 結果為 "age: 18"  
    String s2 = "a" + true; // 結果為 "atrue"  
    
  2. 多個 “+” 連續運算:從左到右執行,若左側出現字符串,則后續均為拼接;否則先執行算術運算。
    示例:

    int a = 10;  
    String s3 = 5 + 3 + "a"; // 先算5+3=8,再拼接 → "8a"  
    String s4 = "a" + 5 + 3; // 從左到右拼接 → "a53"  
    
  3. 字符(char)與數字相加:char 會轉換為對應 ASCII 碼(int 類型),執行算術加法。
    示例:

    char c = 'a'; // ASCII碼為97  
    int sum = c + 1; // 結果為98('b'的ASCII碼)  
    

四、賦值運算符

賦值運算符用于將右側值賦給左側變量,包括基本賦值復合賦值

1. 基本賦值運算符(=)

  • 功能:將右側表達式結果賦給左側變量(左側必須是可修改的變量,不能是常量)。
  • 示例:int a = 5;

2. 復合賦值運算符

復合賦值是 “算術運算 + 賦值” 的簡寫,語法為?變量 運算符= 操作數,等價于?變量 = (變量類型)(變量 運算符 操作數)(隱含強制轉換)。

運算符等價寫法示例
+=a += b?→?a = (a類型)(a + b)short s=1; s += 2;?→ 正確(隱含 short 轉換)
-=a -= b?→?a = (a類型)(a - b)int a=5; a -= 3;?→?a=2
*=a *= b?→?a = (a類型)(a * b)double d=2; d *= 3;?→?d=6
/=a /= b?→?a = (a類型)(a / b)int a=10; a /= 3;?→?a=3
%=a %= b?→?a = (a類型)(a % b)int a=7; a %= 3;?→?a=1

注意:復合賦值的隱含強制轉換可避免部分類型錯誤,例如?short s=1; s = s + 2;?會報錯(s+2 為 int),但?s += 2?正確。

五、關系運算符

關系運算符用于判斷兩個操作數的關系,結果為boolean 類型true?或?false)。

運算符功能示例
==等于3 == 5 → false
!=不等于3 != 5 → true
>大于5 > 3 → true
<小于5 < 3 → false
>=大于等于5 >= 5 → true
<=小于等于3 <= 2 → false

注意

  • 區分?==(判斷相等)和?=(賦值),例如?if(a=3)?會恒為?true(因賦值結果為 3,非 0 即真),是常見錯誤。
  • 引用類型的?==?判斷地址是否相同,而非內容(內容判斷需用?equals()?方法)。

六、邏輯運算符

邏輯運算符用于連接 boolean 表達式,執行邏輯判斷,結果為 boolean 類型。

1. 基本邏輯運算符(非短路)

運算符功能運算規則(a、b 為 boolean)示例
&邏輯與(且)全為 true 則 true,否則 falsetrue & false → false
邏輯或(或)至少一個 true 則 true,全 false 則 false`truefalse → true`
!邏輯非(取反)true→false,false→true!true → false
^邏輯異或兩個結果不同則 true,相同則 falsetrue ^ true → false

特點:無論左側結果如何,右側表達式都會執行(例如?(3>5) & (a++)>0?中,a++?會執行)。

2. 短路邏輯運算符

運算符功能運算規則(a、b 為 boolean)示例
&&短路與左側為 false 時,右側不執行,結果為 false;左側為 true 時,需判斷右側(3>5) && (a++)>0?→?a不變
短路或左側為 true 時,右側不執行,結果為 true;左側為 false 時,需判斷右側`(3<5)(a++)>0a` 不變

優勢:短路特性可提高效率(避免無用計算),例如?if(obj != null && obj.getValue() > 0)?可避免空指針異常(若 obj 為 null,右側不執行)。

七、三元運算符

三元運算符是 Java 中唯一的三目運算符,語法為:

條件表達式 ? 表達式1 : 表達式2  
  • 功能:條件表達式為 true 時,執行表達式 1;否則執行表達式 2。

  • 示例

    int max = (5 > 3) ? 5 : 3; // 結果為5  
    String res = (score >= 60) ? "及格" : "不及格";  
    
  • 注意:表達式 1 和表達式 2 的類型必須兼容(可自動轉換或顯式轉換),否則編譯報錯。例如?(3>2) ? 1 : 2.0?會報錯(int 與 double 不兼容)。

八、運算符優先級

當多個運算符混合使用時,優先級決定執行順序(優先級高的先執行),可通過括號?()?改變優先級(括號優先級最高)。從高到低的優先級順序如下:

  1. 括號:()
  2. 單目運算符:++--!
  3. 算術運算符:*/%(高于?+-
  4. 關系運算符:><>=<=(高于?==!=
  5. 邏輯運算符:!(高于?&&&&?高于?||
  6. 三元運算符:? :
  7. 賦值運算符:=+=-=?等

示例

int a = 3;  
int b = 5;  
int c = a + b * 2; // 先算b*2=10,再算a+10 → 13  
int d = (a + b) * 2; // 括號優先,先算a+b=8,再*2 → 16  
boolean e = a > 2 && b < 4 || !false; // 等價于 (a>2 && b<4) || true → false || true → true  

九、總結

Java 運算符是程序邏輯的基礎,掌握各類運算符的功能、轉換規則、短路特性及優先級,可避免常見錯誤(如整數除法精度問題、短路邏輯的副作用、==?與?=?混淆等)。實際開發中,建議通過括號明確運算順序,提高代碼可讀性。

通過合理使用運算符,能高效實現數值計算、邏輯判斷、變量賦值等核心功能,是 Java 編程的必備技能。

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

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

相關文章

shellgpt

一、介紹 官網&#xff1a;https://github.com/TheR1D/shell_gpt ShellGPT&#xff08;shell_gpt&#xff09; 是一款把 GPT 系列大模型能力直接搬到終端 的開源命令行生產力工具。用日常英語或中文描述需求&#xff0c;就能幫你 生成、解釋甚至自動執行 Shell 命令&#xff…

geoserver sql視圖調用Postgis自定義函數問題記錄

一、問題描述&#xff1a;geoserver sql視圖調用Postgis自定義函數對點圖層增加一條記錄時&#xff0c;返回結果主鍵自增ID加了2&#xff0c;但表中數據只增加一條記錄。 但在pgAdmin中直接寫SQL調用Postgis自定義函數對點圖層增加一條記錄時&#xff0c;返回結果主鍵自增ID只加…

#T1224. 最大子矩陣

題目傳送 題目描述 已知矩陣的大小定義為矩陣中所有元素的和。給定一個矩陣&#xff0c;你的任務是找到最大的非空(大小至少是11)子矩陣。 比如&#xff0c;如下44的矩陣 0 -2 -7 09 2 -6 2 -4 1 -4 1-1 8 0 -2的最大子矩陣是 9 2-4 1-1 8這…

2025年大模型安全崗的面試匯總(題目+回答)

安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 1. Transformer核心機制及其對LLM突破的基石作用 2. LLM能力邊界評估框架設計 3. 模型層級安全風險分析 …

《關于省級政務云服務費支出預算標準的規定》豫財預〔2024〕106號解讀

《關于省級政務云服務費支出預算標準的規定》豫財預〔2024〕106號文件由河南省財政廳編制經省政府同意后于2024年12月3日印發執行&#xff0c;規定作為省級政務云服務費支出預算編制和審核的依據&#xff0c;旨在加強省級部門預算管理&#xff0c;規范政務云服務費支出預算編制…

使用HalconDotNet實現異步多相機采集與實時處理

文章目錄 一、核心功能與原理 功能目標: 工作原理: 關鍵機制: 二、完整C#實現代碼 三、關鍵實現解析 1. 零拷貝圖像傳輸 2. 動態幀率控制 3. HALCON并行優化 4. 異常隔離機制 四、高級優化策略 1. 硬件加速配置 2. 內存池管理 3. 實時性保障 一、核心功能與原理 功能目標:…

《瘋狂Java講義(第3版)》學習筆記ch4

ch4流程控制與數組1.switch語句后的expression表達式的數據類型只能是byte、short、char、int四種證書類型。2.建議不要在循環體內修改循環變量&#xff08;也叫循環計數器&#xff09;的值&#xff0c;否則會增加程序出錯的可能性。3.定義數組推薦語法格式&#xff1a;type[] …

COLMAP進行密集重建,三維重建的步驟

密集重建是在稀疏重建的基礎上進行的 稀疏重建見&#xff1a;用 COLMAP GUI 在 Windows 下一步步完成 相機位姿估計&#xff08;SfM&#xff09; 和 稀疏點云重建的詳細步驟&#xff1a;_colmap database導入圖片位姿-CSDN博客 完成稀疏重建后直接進入以下步驟進行密集重建&am…

基于飛算JavaAI實現Reactor模式服務器的深度實踐

一、飛算JavaAI技術概述 1.1 飛算JavaAI平臺簡介飛算JavaAI是飛算科技推出的智能化Java開發平臺&#xff0c;通過AI技術賦能傳統軟件開發流程&#xff0c;為開發者提供從需求分析到代碼實現的全流程智能化解決方案。該平臺深度融合了人工智能技術與軟件開發實踐&#xff0c;具備…

量子人工智能

量子人工智能&#xff08;QAI&#xff09;是量子計算與人工智能的強大融合。這一領域旨在將量子系統獨特的計算能力與人工智能的模式識別和學習能力相結合&#xff0c;以更快、更高效地解決問題。 量子人工智能與常規人工智能的區別是什么&#xff1f;常規人工智能在經典計算機…

算法題Day1

1. 練習1&#xff1a;Hello,World!解題步驟:using namespace std; int main() {cout<<"Hello,World!"<<endl;return 0; }2. 練習2&#xff1a;打印飛機解題步驟:#include <iostream> using namespace std; int main() {cout << " …

Cypher注入詳解:原理、類型與測試方法

Cypher&#xff0c;全稱為 (Open) Cypher Query Language&#xff0c;是一種專為圖數據庫設計的聲明式查詢語言。它以直觀的模式匹配方式&#xff0c;幫助開發者和數據分析師從復雜的圖結構數據中檢索、創建和修改信息。如果說 SQL 是關系型數據庫的語言&#xff0c;那么 Cyphe…

PG靶機 - Pelican

一、 初步偵察與服務探測 1.1 端口掃描與服務識別 首先&#xff0c;對目標主機 192.168.163.98 進行全面的端口掃描&#xff0c;以識別所有開放的服務。 sudo nmap 192.168.163.98 -p- --min-rate5000 -A圖 1: Nmap 掃描結果&#xff0c;顯示多個開放端口 掃描結果表明&#xf…

【1】Transformers快速入門:自然語言處理(NLP)是啥?

第一章&#xff1a;自然語言處理&#xff08;NLP&#xff09;是啥&#xff1f;一句話解釋&#xff1a; NLP 教電腦聽懂人話、說人話的技術 &#xff08;比如讓手機聽懂你說話、讓翻譯軟件變聰明&#xff09;NLP發展史&#xff1a;電腦學人話的 “翻車史” 第一階段&#xff08…

微軟發布五大AI Agent設計模式 推動企業自動化革新

今日&#xff0c;微軟在官網正式公布了企業級AI智能體&#xff08;Agent&#xff09;的五大核心設計模式&#xff0c;旨在通過模塊化架構與自適應能力&#xff0c;幫助企業構建具備推理、協作與自主進化能力的"數字員工團隊"。這一技術框架突破傳統RPA&#xff08;機…

如何根據本地是有GPU安裝對應CUDA版本的PyTorch

要在本地安裝與您的NVIDIA GPU匹配的CUDA版本PyTorch&#xff0c;請按以下步驟操作&#xff1a; 步驟1&#xff1a;確定GPU型號和驅動信息 1.按 Win X選擇 ?設備管理器?2.展開 ?顯示適配器? → 記錄您的NVIDIA顯卡型號&#xff08;如RTX 3060&#xff09;3.打開命令提示…

在FP32輸入上計算前向傳播需要多長時間?FP16模型的實例與之前的模型相比,它快了多少?

下面的 MixedModel 類使用作為參數提供的數據類型創建了一個非常簡單的兩層模型: class MixedModel(nn.Module): def init (self, dtype): super(). init

嵌入式硬件中MOS管圖形詳解

第一:MOS管電子元器件分析 MOS管全稱叫金屬氧化物半導體場效應晶體管,是一種壓控器件。 MOS管屬于場效應晶體管。 1、進入飽和區,若想加大電流該怎么做? 答:增加柵極電壓,以擴大溝道寬度,此時到溝道再次被夾斷所通過的電流也會增大。 2、MOS管的特性 答:(1)MOS管…

介紹java中atomic及相關類

文章目錄一、Atomic 類的核心原理二、常見 Atomic 類及用法1. 基本類型原子類&#xff08;1&#xff09;AtomicInteger&#xff08;原子更新 int&#xff09;&#xff08;2&#xff09;AtomicLong&#xff08;原子更新 long&#xff09;&#xff08;3&#xff09;AtomicBoolean…

消費級顯卡分布式智能體協同:構建高性價比醫療AI互動智能體的理論與實踐路徑

摘要: 本文系統探討了基于消費級顯卡集群(NVIDIA 30/40系列)的分布式小模型(1.5B-7B)協同機制,構建醫療互動智能網的理論基礎與實踐路徑。文章從醫療AI的特殊性出發,提出“異構智能體協同計算”范式,通過模型分片、動態任務調度、聯邦學習等核心技術,解決醫療場景中數…