入門篇-其之七-Java運算符(下)

来源:https://www.cnblogs.com/iCode504/archive/2023/10/27/17792340.html
-Advertisement-
Play Games

PDF(Portable Document Format)是一種常用的文檔格式,具有跨平臺相容性、保真性、安全性和交互性等特點。我們日常生活工作中的合同、報告、論文等通常都採用PDF格式,以確保文檔在不同的操作系統(例如 Windows、Mac、Linux)和設備上被查看時都能保持外觀的一致性。 P ...


一、三元運算符的使用

三元運算符(也稱作三目運算符),使用:?表示,其格式為:布爾表達式 ? 表達式1 : 表達式2

  • 如果布爾表達式的計算結果是true,那麼執行表達式1;否則,如果布爾表達式的計算結果是false,則執行表達式2。
  • 表達式1和表達式2計算結果的數據類型必須要和左側變數定義的數據類型保持一致。例如:表達式1和表達式2的計算結果都是double類型,那麼左側定義的變數類型也是double

以下是三元運算符作用原理圖:

未標題-1

以下是三元運算符在代碼中的使用:

/**
 * 三元運算符的使用
 *
 * @author ZhaoCong
 * @date 2023-10-25 11:57:21
 */
public class Ternary {
    public static void main(String[] args) {
        byte byteValue1 = 20;
        byte byteValue2 = 30;

        byte result1 = byteValue1 > byteValue2 ? byteValue1 : byteValue2;
        System.out.println("result1 = " + result1);

        double doubleValue1 = 40.13;
        double doubleValue2 = 30.28;

        double result2 = doubleValue1 == doubleValue2 ? doubleValue1 : doubleValue2;
        System.out.println("result2 = " + result2);

        String strValue1 = "";
        String result3 = strValue1.length() == 0 ? "strValue1的長度是0" : "strValue1的長度不是0";
        System.out.println("result3 = " + result3);
    }
}

運行結果:

image-20231027105629436

三元運算符可以嵌套使用,但不推薦,原因是可讀性變差。

String strValue = "iCode504";
int length = strValue.length();
// 不推薦嵌套的寫法
String result = length > 0 ? length < 10 ? "strValue的長度在0~10之間" : "strValue的長度超過10" : "strValue的長度為0";
System.out.println("result = " + result);

嵌套式寫法做進一步簡化處理:

String strValue = "iCode504";
int length = strValue.length();
String result = length > 0 && length < 10 ? "strValue的長度在0~10之間" : "strValue的長度不在0~10之間";
System.out.println(result);

二、三元運算符和if語句的區別

共同點:三元運算符和if語句的作用都是用作條件判斷。但二者也存在一些差別:

1. 語法層面:在大多數情況下,三元運算符語法是一行語句,if語句可能是多行。例如:判斷一個字元串的長度是否為0,以下分別是三元運算符和if語句的寫法:

// 三元運算符寫法
String strValue = "iCode504";
String result = strValue.length() == 0 ? "strValue的長度為0" : "strValue的長度不為0";
// if寫法
String strValue = "iCode504";
String result;
if (strValue.length() == 0) {
    result = "strValue的長度為0";
} else {
    result = "strValue的長度不為0";
}

2. 代碼可讀性:對於簡單的條件判斷,使用三元運算符確實可以簡化代碼,但是如果是複雜條件或者嵌套,那麼三元運算符會讓代碼變得更加複雜難以理解。

3. 靈活性:if語句中可以在代碼塊中放入更多的表達式,但是三目運算符的表達式只能存在一個。

總體來說,三目運算符和if語句都有各自的優點和使用場景。在簡單的情況下,使用三目運算符比較方便;在複雜情況下,使用if語句更合適。

三、運算符的優先順序

前面學過和很多的運算符:例如算術運算符、比較運算符、邏輯運算符等等,如果這些運算符進行混合運算時,存在著一個優先順序,即誰先計算,誰後計算的問題。數學中存在這樣一條規定:先乘除,後加減。也就是說,乘和除是同一級別,二者的計算級別要比加和減的級別高。這條規定在Java中也完全適用。

以下是運算符的優先順序順序表(由高到低,這張表瞭解即可,不需要額外記憶):

運算符 關聯性
() [] 從左向右
! ~ ++ -- 正負號 從右向左
* / % 從左向右
+ - 從左向右
<< >> >>> 從左向右
< <= > >= instanceof 從左向右
== != 從左向右
& 從左向右
^ 從左向右
| 從左向右
&& 從左向右
|| 從左向右
?: 從右向左
= += -= *= /= %= &= |= ^= <<= >>= >>>= 從右向左

使用括弧()可以提升運算符的優先順序。例如:

int value1 = 30;
int value2 = 28;
int value3 = 17;
int result1 = value1 * value2 + value3;		// 先乘除,後加減
int result2 = value1 * (value2 + value3);	// 有括弧的優先計算

原本加號的運算等級要比乘號的等級要低,但是給加法表達式加上括弧以後,加法表達式優先計算,然後再計算乘除法。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、 前言 OpenSSH 的加密功能需要用到OpenSSL,所以在升級OpenSSH的時候,大部分情況是需要將OpenSSL一起升級的。 這裡我們選擇先升級OpenSSL到OpenSSL 1.1.1w 11 Sep 2023 然後再升級OpenSSH 到OpenSSH_9.5p1, OpenSSL ...
  • wget wget是一個流行的、免費的、非互動式的命令行工具,主要用於從網路上下載文件。支持通過HTTP、HTTPS和FTP協議下載,並且它是遞歸下載的,這意味著它可以鏡像網站或獲取完整的FTP目錄結構。 下載單個文件 使用wget時,只指定了url地址,表示從網路中下載單個文件到當前目錄,這是wg ...
  • 當出現memory temporarily unavailable報錯時,首先根據報錯信息確認具體是哪個cn/dn報的,如果報錯信息沒有類似dnxxxx_xxxx這樣的信息,就是cn報的,需要去每個cn的日誌里排查是哪個cn。 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 近期對管理後臺相關功能進行優化,其中導出功能涉及到查詢數據過多導致查詢很慢問題,決定採用點擊後加入到下載中心方式,既解決了介面慢等待問題,也方便後期各種文件的重覆下載,一舉多得~ 功能上很好實現,調介面就可以了,主要涉及到一個小球飛入效果 ...
  • 一、數組的存儲 1、當聲明一個變數時,var a = 111; 在後臺電腦翻譯時,var聲明 a變數 所以此時會產生一個棧記憶體,變數 a 的初始值為undefined,然後 = 111 ; undefined消失,111的值被賦值給了a。如果多個變數賦值的話,棧記憶體的執行順序是先進後出的順序。也叫 ...
  • 引言 近期,三大主流瀏覽器引擎均發佈最新版本,支持W3C的CSS Color 4標準,包含新的取色方法color()和相應語法,可展示更多的色域及色彩空間,這意味著web端能展示更豐富更高清的色彩。雖然目前只有最新版本的現代瀏覽器才支持,我們可以先提前瞭解一下這項新標準。 本文首先會先簡單介紹幾個色 ...
  • 非功能性需求是什麼呢?保障系統持續健康運轉的輔助需求。依然以電商系統的優惠券為例,在促銷活動期間發放大量優惠券,如何防止用戶集中領券時系統不崩盤呢?活動結束後,如何收縮伺服器,節省伺服器資源呢? 非功能性需求是面向運維的,重要但是不太緊迫,有時候可以沒有操作界面,由架構師提出解決方案,再推動各個業務... ...
  • 單詞 "多態" 意味著 "多種形式",在編程中,它指的是具有相同名稱的方法/函數/操作符,可以在許多不同的對象或類上執行。 函數多態性 一個示例是 Python 中的 len() 函數,它可以用於不同的對象。 字元串 對於字元串,len() 返回字元的數量: 示例 x = "Hello World! ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...