【Java編程動手學】 Java中的運算符全解析

文章目錄

    • 一、引言
    • 二、算術運算符
      • 1、基本概念
      • 2、具體運算符及示例
    • 三、關系運算符
      • 1、基本概念
      • 2、具體運算符及示例
    • 四、自增減運算符
      • 1、基本概念
      • 2、具體運算符及示例
    • 五、邏輯運算符
      • 1、基本概念
      • 2、具體運算符及示例
    • 六、位運算符
      • 1、基本概念
      • 2、具體運算符及示例
    • 七、移位運算符
      • 1、基本概念
      • 2、具體運算符及示例
    • 八、賦值運算符
      • 1、基本概念
      • 2、具體運算符及示例
    • 九、其他運算符
      • 1、三元運算符
      • 2、instanceof運算符
    • 十、運算符優先級
    • 十一、總結


一、引言

在Java編程中,運算符是構建表達式和實現各種邏輯操作的基礎元素。它們就像是一種特殊的符號語言,能夠讓程序員對數據進行各種處理和運算。今天,我們就來全面總結Java中的各類運算符,包括算術運算符、關系運算符、自增減運算符、邏輯運算符、位運算符、移位運算符、賦值運算符、其他運算符以及運算符優先級。

二、算術運算符

1、基本概念

算術運算符用于執行基本的數學運算,如加法、減法、乘法、除法和取模等。

2、具體運算符及示例

運算符名稱示例代碼示例
+加法運算符計算兩個數的和int a = 5; int b = 3; int sum = a + b; // sum的值為8
-減法運算符計算兩個數的差int x = 10; int y = 4; int diff = x - y; // diff的值為6
*乘法運算符計算兩個數的乘積int m = 6; int n = 7; int product = m * n; // product的值為42
/除法運算符計算兩個數的商int p = 20; int q = 3; int result = p / q; // result的值為6(整數除法)
%取模運算符計算兩個數相除的余數int num1 = 10; int num2 = 3; int remainder = num1 % num2; // remainder的值為1

在Java中,當使用/運算符對兩個整數進行除法運算時,結果也是整數,小數部分會被舍去。如果希望得到精確的浮點數結果,至少需要一個操作數是浮點數。例如:

public class ArithmeticOperatorsExample {public static void main(String[] args) {double div1 = 20.0 / 3;System.out.println("20.0 / 3的結果:" + div1);}
}

三、關系運算符

1、基本概念

關系運算符用于比較兩個值之間的關系,結果是一個布爾值(truefalse)。

2、具體運算符及示例

運算符名稱示例代碼示例
==等于運算符判斷兩個值是否相等int a = 5; int b = 5; boolean isEqual = (a == b); // isEqual的值為true
!=不等于運算符判斷兩個值是否不相等int x = 10; int y = 8; boolean isNotEqual = (x != y); // isNotEqual的值為true
>大于運算符判斷左邊的值是否大于右邊的值int m = 15; int n = 10; boolean isGreater = (m > n); // isGreater的值為true
<小于運算符判斷左邊的值是否小于右邊的值int p = 5; int q = 8; boolean isLess = (p < q); // isLess的值為true
>=大于等于運算符判斷左邊的值是否大于或等于右邊的值int num1 = 10; int num2 = 10; boolean isGreaterOrEqual = (num1 >= num2); // isGreaterOrEqual的值為true
<=小于等于運算符判斷左邊的值是否小于或等于右邊的值int num3 = 7; int num4 = 9; boolean isLessOrEqual = (num3 <= num4); // isLessOrEqual的值為true

關系運算符常用于條件判斷語句中,例如if語句:

public class RelationalOperatorsExample {public static void main(String[] args) {int score = 85;if (score >= 60) {System.out.println("及格了");} else {System.out.println("不及格");}}
}

四、自增減運算符

1、基本概念

自增運算符(++)和自減運算符(--)用于對變量進行遞增或遞減操作。它們可以分為前綴和后綴兩種形式。

2、具體運算符及示例

運算符名稱示例代碼示例及結果分析
++(前綴)前綴自增運算符先對變量進行自增操作,再使用變量的值int a = 5; int b = ++a;
執行后,a的值變為6,b的值也變為6。因為前綴自增是先增加a的值,再將增加后的值賦給b
++(后綴)后綴自增運算符先使用變量的值,再對變量進行自增操作int x = 5; int y = x++;
執行后,x的值變為6,但y的值是5。因為后綴自增是先使用x的原始值賦給y,然后再增加x的值。
--(前綴)前綴自減運算符先對變量進行自減操作,再使用變量的值int m = 10; int n = --m;
執行后,m的值變為9,n的值也變為9。
--(后綴)后綴自減運算符先使用變量的值,再對變量進行自減操作int p = 10; int q = p--;
執行后,p的值變為9,但q的值是10。

自增減運算符在循環語句中經常使用,例如for循環:

public class IncrementDecrementExample {public static void main(String[] args) {for (int i = 0; i < 5; i++) {System.out.println(i);}}
}

五、邏輯運算符

1、基本概念

邏輯運算符用于對布爾值進行邏輯運算,返回一個布爾結果。

2、具體運算符及示例

運算符名稱示例代碼示例
&&邏輯與運算符當且僅當兩個操作數都為true時,結果才為trueboolean a = true; boolean b = false; boolean result1 = a && b; // result1的值為false
``邏輯或運算符
!邏輯非運算符對布爾值取反boolean flag = true; boolean notFlag =!flag; // notFlag的值為false

邏輯運算符常用于條件組合判斷:

public class LogicalOperatorsExample {public static void main(String[] args) {int age = 20;boolean hasTicket = true;if (age >= 18 && hasTicket) {System.out.println("可以進入");} else {System.out.println("不可以進入");}}
}

六、位運算符

1、基本概念

位運算符用于對整數的二進制位進行操作。

2、具體運算符及示例

運算符名稱示例代碼示例及解釋
&按位與運算符對兩個操作數的對應二進制位進行與運算int a = 5; // 二進制為0101<br>int b = 3; // 二進制為0011<br>int result1 = a & b; // 二進制為0001,即1
``按位或運算符對兩個操作數的對應二進制位進行或運算
^按位異或運算符對兩個操作數的對應二進制位進行異或運算,相同為0,不同為1int m = 5; // 二進制為0101<br>int n = 3; // 二進制為0011<br>int result3 = m ^ n; // 二進制為0110,即6
~按位取反運算符對操作數的二進制位取反int p = 5; // 二進制為0101<br>int result4 = ~p; // 二進制為1010(在32位整數中,前面還有很多1),即-6

位運算符在一些對性能要求較高的底層編程中經常使用,例如對硬件寄存器的操作。

七、移位運算符

1、基本概念

移位運算符用于將整數的二進制位進行左移或右移操作。

2、具體運算符及示例

運算符名稱示例代碼示例及解釋
<<左移運算符將二進制位向左移動指定的位數,右邊空出的位用0填充int a = 5; // 二進制為0101<br>int result1 = a << 2; // 二進制為010100,即20
>>帶符號右移運算符將二進制位向右移動指定的位數,保持符號位不變int x = -8; // 二進制(補碼)為11111111111111111111111111111000<br>int result2 = x >> 2; // 二進制(補碼)為11111111111111111111111111111110,即-2
>>>無符號右移運算符將二進制位向右移動指定的位數,左邊空出的位用0填充int m = -8; // 二進制(補碼)為11111111111111111111111111111000<br>int result3 = m >>> 2; // 二進制為00111111111111111111111111111110,即1073741822

移位運算符可以用于高效地進行乘以或除以2的冪次方的運算。

八、賦值運算符

1、基本概念

賦值運算符用于將一個值賦給一個變量。

2、具體運算符及示例

運算符名稱示例代碼示例
=簡單賦值運算符將右邊的值賦給左邊的變量int a; a = 10;
+=加賦值運算符將左邊變量與右邊的值相加,再將結果賦給左邊的變量int x = 5; x += 3; // x的值為8
-=減賦值運算符將左邊變量減去右邊的值,再將結果賦給左邊的變量int m = 10; m -= 4; // m的值為6
*=乘賦值運算符將左邊變量與右邊的值相乘,再將結果賦給左邊的變量int n = 6; n *= 7; // n的值為42
/=除賦值運算符將左邊變量除以右邊的值,再將結果賦給左邊的變量int p = 20; p /= 3; // p的值為6(整數除法)
%=取模賦值運算符將左邊變量對右邊的值取模,再將結果賦給左邊的變量int num1 = 10; num1 %= 3; // num1的值為1

賦值運算符可以簡化代碼的編寫,使代碼更加簡潔。

九、其他運算符

1、三元運算符

語法為條件? 表達式1 : 表達式2。如果條件為true,則返回表達式1的值;否則,返回表達式2的值。例如:

public class TernaryOperatorExample {public static void main(String[] args) {int score = 85;String result = score >= 60? "及格" : "不及格";System.out.println(result);}
}

2、instanceof運算符

用于判斷一個對象是否是一個特定類或接口的實例。例如:

public class InstanceofExample {public static void main(String[] args) {String str = "Hello";if (str instanceof String) {System.out.println("str是String類的實例");}}
}

十、運算符優先級

在Java中,不同的運算符具有不同的優先級。當表達式中包含多個運算符時,優先級高的運算符會先進行運算。以下是Java運算符優先級從高到低的表格:

優先級運算符
1()[].
2++(后綴)、--(后綴)、!~+(一元正號)、-(一元負號)、(type)(類型轉換)
3*/%
4+(二元加法)、-(二元減法)
5<<>>>>>
6<<=>>=instanceof
7==!=
8&
9^
10`
11&&
12`
13?:(三元運算符)
14=+=-=*=/=%=<<=>>=>>>=&=^=、`

在實際編程中,為了避免因運算符優先級問題導致的錯誤,可以使用括號來明確運算順序。

十一、總結

Java中的運算符種類繁多,每種運算符都有其特定的功能和用途。算術運算符用于基本的數學運算,關系運算符用于比較操作,自增減運算符用于變量的遞增和遞減,邏輯運算符用于布爾值的邏輯運算,位運算符和移位運算符用于對二進制位的操作,賦值運算符用于給變量賦值,其他運算符如三元運算符和instanceof運算符也有其獨特的應用場景。同時,了解運算符的優先級對于正確編寫表達式至關重要。通過合理使用這些運算符,我們可以編寫出高效、簡潔的Java程序。

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

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

相關文章

【前端】1 小時實現 React 簡歷項目

近期更新完畢。僅包括核心代碼 目錄結構 yarn.lock保證開發者每次能下載到同版本依賴&#xff0c;一般不需要特別留意 package.json 是 Node.js 項目、前端項目、npm/yarn的配置文件。 Dockerfile 是用來 定義 Docker 鏡像構建過程的文本文件。它是一份腳本&#xff0c;告訴 …

python中的pydantic是什么?

Pydantic 是 Python 中一個用于數據驗證和設置管理的庫&#xff0c;主要通過 Python 類型注解&#xff08;Type Hints&#xff09;來定義數據結構&#xff0c;并自動驗證輸入數據的合法性。它廣泛應用于 API 開發&#xff08;如 FastAPI&#xff09;、配置管理、數據序列化等場…

騰訊云市場目前飽和度

首先我需要理解市場飽和度的概念。市場飽和度通常指一個產品或服務在潛在市場中的滲透程度&#xff0c;高飽和度意味著市場增長空間有限&#xff0c;低飽和度則表明還有較大發展潛力。 從搜索結果看&#xff0c;騰訊云目前在中國云服務市場排名第三&#xff0c;市場份額約為15%…

EDR、NDR、XDR工作原理和架構及區別

大家讀完覺得有幫助記得關注和點贊&#xff01;&#xff01;&#xff01; EDR、NDR、XDR是網絡安全中關鍵的檢測與響應技術&#xff0c;它們在覆蓋范圍、數據源和響應機制上有顯著差異。以下是它們的工作原理和架構詳解&#xff1a; --- ### &#x1f50d; 一、EDR&#xff0…

vue3 + luckysheet 實現在線編輯Excel

效果圖奉上&#xff1a; 引入的依賴&#xff1a; "dependencies": {"types/jquery": "^3.5.32","types/xlsx": "^0.0.36","jquery": "^3.7.1","xlsx": "^0.18.5",}在index.html中…

Linux下MinIO分布式安裝部署

文章目錄 一、MinIO簡單說明二、MinIO分布式安裝部署1、關閉SELINUX2、開啟防火墻2.1、關閉firewall&#xff1a;2.2、安裝iptables防火墻 3、安裝MinIO4、添加MinIO集群控制腳本4.1添加啟動腳本4.2添加關閉腳本 5、MinIO控制臺使用 一、MinIO簡單說明 1、MinIO是一個輕量的對…

Codeforces Round 980 (Div. 2)

ABC 略 D 這個過程一定是由1向后跳的過程中穿插有幾次向前一步一步走。直到跳到一個位置后再把前面所有沒有走過的位置倒序走一遍。總分就等于最大位置的前綴和-前面所有起跳位置和。前綴和固定我們只需要求到每個位置的最小起跳和即可。對于這個向后跳和向前走的過程我們可以…

Langchain實現rag功能

RAG&#xff08;檢索增強生成&#xff09;的核心是通過外部知識庫增強大模型回答的準確性和針對性&#xff0c;其工作流程與優化策略如下&#xff1a; 一、RAG 核心流程 ?知識庫構建? ?文檔加載與分割?&#xff1a;將非結構化文檔&#xff08;PDF、Markdown等&#xff09;…

算法筆記上機訓練實戰指南刷題

算法筆記上機訓練實戰指南刷題記錄 文章目錄 算法筆記上機訓練實戰指南刷題記錄模擬B1001 害死人不償命的(3n1)猜想B1011 AB 和 CB1016 部分ABB1026 程序運行時間B1046劃拳B1008數組元素循環右移問題B1012 數字分類B1018 錘子剪刀布A1042 Shuffling Machine 每天兩題&#xff0…

MYSQL基礎內容

一、介紹 1.不用數據庫&#xff1a;使用IO流對數據進行管理 2.使用數據庫&#xff1a;使用SQL語句對開發的數據進行管理&#xff0c;能儲存上億條數據 3.MYSQL&#xff1a; 是流行的關系型數據庫管理系統之一&#xff0c;將數據保存在不同的數據表中&#xff0c;通過表與表之…

音視頻會議服務搭建(設計方案)-01

前言 最近在做音視頻會議系統服務搭建的工作任務&#xff0c;因為內容過多&#xff0c;我會逐篇分享相關的設計方案、開發思路、編程語言、使用的組件集合等等。如果你也有大型音視頻會議系統搭建架構的需求&#xff0c;希望這些可以對你有所幫助。 EchoMeet 音視頻會議系統架構…

刷leetcode hot100/準備機試--圖

圖的基礎知識【這部分建議使用acm模式】 圖論理論基礎 | 代碼隨想錄 存儲&#xff1a; 一般有鄰接表【適合稀疏圖】【數組 鏈表 】和鄰接矩陣【適合稠密圖】存儲方式 注意鄰接表 和 鄰接矩陣的寫法都要掌握&#xff01; 鄰接矩陣 n個節點&#xff0c;申請n*n或者&#xf…

無代碼自動化測試工具介紹

無代碼自動化測試工具允許用戶無需編寫代碼即可創建和運行測試,通過拖拽式界面或錄制回放等可視化界面進行操作。 這些工具利用圖形用戶界面和預定義命令來創建測試,使非編程人員也能進行自動化測試。 無代碼自動化測試工具使團隊能夠: 使用直觀的拖拽界面開發和執行自動化…

python學習打卡day58

DAY 58 經典時序預測模型2 知識點回顧&#xff1a; 時序建模的流程時序任務經典單變量數據集ARIMA&#xff08;p&#xff0c;d&#xff0c;q&#xff09;模型實戰SARIMA摘要圖的理解處理不平穩的2種差分 n階差分---處理趨勢季節性差分---處理季節性 建立一個ARIMA模型&#xf…

分布式鎖的實現方式:使用 Redisson 實現分布式鎖( Spring Boot )

Redisson提供了分布式和可擴展的Java數據結構&#xff0c;包括分布式鎖的實現。 1. 添加依賴 在pom.xml中添加Redisson依賴&#xff1a; <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId>…

Web基礎關鍵_004_CSS(二)

目 錄 一、樣式 1.行內樣式 2.內部樣式 3.外部樣式 二、選擇器優先級 1.非關系選擇器 2.關系選擇器 三、屬性 四、盒子模型 五、元素 1.塊級元素 2.行內元素 3.行內塊級元素 4.元素類型轉換 六、浮動 七、定位 1.靜態定位 2.相對定位 3.絕對定位 4.固定定位 …

數據使用權與所有權分離:能否誕生“數據租賃”市場

——首席數據官高鵬律師數字經濟團隊創作&#xff0c;AI輔助 數據如礦藏&#xff0c;開采需“契約” 想象一座蘊藏著無盡資源的數字礦山&#xff1a;企業或個人擁有數據的“所有權”&#xff0c;如同手握礦脈的產權&#xff0c;但若無法高效挖掘其價值&#xff0c;礦石終將沉…

【esp32s3】2 - 第一個組件

下面的內容編寫時間跨度有點大&#xff0c;亂了得一團&#xff0c;也沒ai整理。食之無味&#xff0c;棄之可惜。 推薦筆記&#xff1a;ESP32 之 ESP-IDF 教學&#xff08;十八&#xff09;—— 組件配置&#xff08;KConfig&#xff09; 推薦筆記&#xff1a;Kconfig 拓展 樂鑫…

【Java_EE】單例模式、阻塞隊列、線程池、定時器

目錄 單例模式 餓漢模式<代碼> 懶漢模式<代碼> 阻塞隊列 阻塞隊列概念 阻塞隊列解決的問題 阻塞隊列工作原理 阻塞隊列的優/缺點 優點 缺點 模擬實現阻塞隊列<代碼> 線程池 線程池概念 線程池解決的問題 線程池參數 四種拒絕策略 線程池工作…

Redis初識第七期---ZSet的命令和應用場景

ZSet相較于Set來說&#xff0c;它又是有序的&#xff0c;這個有序指的就是我們通常意義上的有序了&#xff0c;ZSet內部中是按照升序來排序的。 排序規則&#xff1a;ZSet相較于Set來說&#xff0c;它內部引入了一個新的屬性&#xff1a;分數&#xff08;Score&#xff09;&am…