運算符的基本概念以及常用Scanner、隨機數Random、選擇結構的初步瞭解

来源:https://www.cnblogs.com/wuzhaoming/archive/2019/10/18/11696020.html
-Advertisement-
Play Games

運算符 分類 算術運算符 位運算符 關係運算符|比較運算符 邏輯運算符 條件運算符 賦值運算符 其中優先順序順序從上到下,可以記憶口訣:單目乘除位關係,邏輯三目後賦值 操作數: 運算符左右兩邊的數 表達式: 運算符連接操作數整體叫做表達式 語句: 分號代表語句的結束 單目|一元運算符: 操作數為1個 ...


運算符

分類

  1. 算術運算符

  2. 位運算符

  3. 關係運算符|比較運算符

  4. 邏輯運算符

  5. 條件運算符

  6. 賦值運算符

其中優先順序順序從上到下,可以記憶口訣:單目乘除位關係,邏輯三目後賦值

操作數: 運算符左右兩邊的數 表達式: 運算符連接操作數整體叫做表達式 語句: 分號代表語句的結束

             
        單目|一元運算符: 操作數為1個  +號  ++ --
        雙目|二元運算符: 操作數為2個  + - * /
        三目|三元運算符: 條件運算符
 

算術運算符

+號:

  1. 正號(可省略)

  2. 加法運算

  3. 字元串的連接

    1. 如果+左右兩邊有字元串的出現"",+就是作為字元串的連接符使用,把兩邊的內容拼接成為一整個字元串使用

-號:

  1. 符號

  2. 減法運算

此外,還有* / %

% 模以,取模,求餘數

++ --

  1. ++,--操作自己 無論++在前還是在後,自己加一 無論--在前還是在後,自己減一

  2. ++,--操作別人 ++在前,先自己加一在參與運算 ++在後,先參與運算在自己加一 --同理

賦值運算符

  1. 基礎賦值運算符

    1. = 是java中唯一一個自右向左運算的符號優先順序最低

  2. 擴展賦值運算符

    1. += a+=b; ==> a=a+b;-=同理

    2. a=b; ==> a=ab; /=、%=同理

推薦使用擴展賦值運算符 優點: 執行效率高 缺點: 不直觀

關係運算符

符號:> < >= <=

可以參與運算的類型:byte short int long float double char

符號:== !=

可以參與運算的類型:基本數據類型、引用數據類型

關係運算符最終得到的結果:boolean類型的結果

邏輯運算符

& 與:一個false就是false,兩個都為true,才為true

| 或:一個為true就是true,兩個都為false,才是false

! 非:取反 !true->false !false->true

^ 異或:相同為false,不同為true

短路: 如果第一個操作數就能夠決定最終的結果,第二個操作數位置不執行。

&& 短路與、|| 短路或

推薦使用短路

所有的邏輯運算符的操作數都為值為boolean類型的表達式。

條件運算符|三目運算符|三元運算符

條件表達式?值1:值2;

條件表達式:值為boolean類型的表達式

執行流程:

1.條件表達式 ,最終會得到一個boolean結果

2.如果結果為true,整個條件表達式最終的結果為值1,否則執行值2;

條件運算符最終肯定會得到一個結果

位運算(僅做瞭解)

先把操作數轉為二進位,根據運算符的邏輯進行操作,最終得到的結果再轉為十進位

& : 同一位置的兩個數,如果一個為0就是0,兩個都為1才是1 | : 同一位置的兩個數,如果一個為1就是1,兩個都為0才是0 ^ : 同一位置的兩個數,相同為0,不同為1 位移運算符

左移 第一個操作數轉為2進位,第二個操作數是移動位數 ,向左移動指定的位數,空位補零,例如:

8<<2 1000左移2位 1000 00 -> 轉為十進位 32

右移 第一個操作數轉為2進位,第二個操作數是移動位數 ,向右移動指定的位數,想象數據的右邊有一條分水線,右側的內容砍掉,只保留左側的數據,轉為十進位,例如:

8>>2 1000 右移2位 10->轉為十進位 2

右移相當於/2 8>>3 8/2^3 左移相當於*2 8<<3 8*2^3

位運算符比直接使用* /效率高

運算符的優先順序: (),.優先順序是最高的

常用類

Scanner

註意:不要讓你的類名與java中已有的類名一致

引用數據類型: 引用數據類型 變數名|引用 = new 引用數據類型();

使用功能: 變數名|引用.功能名字();

Scanner : 接收鍵盤輸入的內容

1.導包 import 導入 + 許可權命名(報名+類名);

位置: 類的上面導包

2.創建這個類型的引用

Scanner sc=new Scanner(System.in);

3.使用功能:

引用.功能名字();

sc.nextInt(); 接收用戶鍵盤輸入的整數類型的數據 sc.nextLong(); 接收用戶鍵盤輸入的長整數類型的數據 sc.nextByte(); 接收用戶鍵盤輸入的位元組類型的數據 sc.nextShort(); 接收用戶鍵盤輸入的短整數類型的數據 sc.nextFloat(); 接收用戶鍵盤輸入的單精度類型的數據 sc.nextDouble(); 接收用戶鍵盤輸入的雙精度類型的數據

sc.next() 從有效字元開始接收,空格不算,接收用戶輸入的字元串內容,知道遇到空格,tab,就接收不到數據,但是功能沒有停止,遇到enter功能結束 sc.nextLine() 接收一整行的數據

從第一個字元開始接收,知道遇到enter結束

系列next功能不能接收enter,遇到enter結束,nextLine可以接收enter

4.關閉

引用.close() 關閉了之後就不能再次使用,就算是重新打開也不好用

Random隨機數

產生隨機數 1.導包 import java.util.Random; 2.創建類型的引用 Random ran=new Random(); 3.使用功能: 引用.nextInt(); 產生一個int範圍內的隨機整數 引用.nextInt(整數n); 產生一個 [0,n) 隨機整數 [0,max) ran.nextInt(max); [0,max] ran.nextInt(max+1); [min,max] ran.nextInt(max-min+1)+min; [min,max) ran.nextInt(max-min)+min; 引用.nextDouble() [0.0,1.0)之間的隨機小數

流程式控制制

順序結構: 從上到下從左到右 選擇結構: 滿足條件才能執行 迴圈結構: 重覆執行某些代碼

選擇結構

if_else

if結構:

單選擇|單分支:
if(條件表達式){
        滿足條件才執行的語句體;
}
條件表達式:值為boolean類型的表達式
執行流程:
    1.執行條件表達式,如果結果為true,就執行語句體
    2.如果結果為false,就跳過if結構

 

雙選擇|雙分支:
if(條件表達式){
                語句體1;
            }else{
                語句體2;
            }
執行流程:
        1.執行條件表達式,如果結果為true,就執行語句體1
        2.如果結果為false,就執行語句體2
   
多選擇|多分支:
            if(條件表達式1){
                語句體1;
            }else if(條件表達式2){
                語句體2;
            }
            .....
            else{
                以上條件都不滿足,就執行else中的內容  語句體n
            }
執行流程:
        1.計算條件表達式1,如果結果為true,執行語句體1,如果結果為false
        2.執行條件表達式2,如果結果為true,執行語句體2,如果結果為false
        ....
        果以上條件都不滿足,執行else中的語句體n
 

註意:如果語句體只有一句,前後的{}可以省略, 如果一個if語句中如果存在接盤俠else,肯定有結果。

if與條件運算符之間的區別:條件運算符肯定有結果,if不一定 能使用條件運算符的就推薦使用條件運算符,結構簡單,效率較高

switch

定值判斷 switch 區間判斷 if 能用switch肯定能用if,能用if的不一定能用switch

switch(表達式){
        case 值1 :
            語句體1;
            break;
        case 值2:
            語句體2;
            break;
        case 值3:
            語句體3;
            break;
            ......

        default:
            以上值都不滿足,執行default中的內容
            break;
    }
 

表達式: 只能為byte,short,int,char,字元串(1.7),枚舉(1.5) 一般使用變數

case: case後的定值與表達式的結果進行判斷是否相等,對應執行不同的語句體 break: 結束switch語句,如果沒有break,會發生case穿透,從現在執行完的語句體開始,如果沒有break,下麵的case無論是否相等,都會執行對應的語句體,直到遇到下一個break或者switch語句的結束而結束 default: 接盤俠,相當於else,以上值都不滿足,執行default中的內容

可寫可不寫,default位置可以改變

執行流程: 1.計算表達式 2.那值與case後的值比較是否相等,如果相等就執行對應的語句體,如果不相等就向下繼續比較

 


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

-Advertisement-
Play Games
更多相關文章
  • 在 Java 中有多種方法可以比較日期,日期在電腦內部表示為(long型)時間點——自1970年1月1日以來經過的毫秒數。在Java中,Date是一個對象,包含多個用於比較的方法,任何比較兩個日期的方法本質上都會比較日期的時間。 本文主要介紹以下五種方式: 1. 使用 Date.compareTo ...
  • 題目:設計一個類,我們只能生成該類的一個實例。 解法一:單線程解法 c++ //缺點:多線程情況下,每個線程可能創建出不同的的Singleton實例 include using namespace std; class Singleton { public: static Singleton get ...
  • 獲取自己的IP地址 ~~~java import java.net.InetAddress; import java.net.UnknownHostException; public class getip { public static void main(String[] args) throw ...
  • 前提 前端業務(主服務)可以以同步或非同步調用TCC框架,或者TCC框架本身就是同步非同步兼備的. 假定TCC框架擁有斷電後的自動恢復能力.同時,在下游業務出現無限失敗的情況下,也會進行無限的重試,以達到最終一致 正式開始 正常流程 一切安好. 可以觀察到,confirm操作完全交由TCC調用.在同步狀 ...
  • 前提 所有服務均有獨立的事物管理機制,相互間沒有任何關聯. 所有業務介面都有對應的補償方法,用於將已經更新的數據還原到上一次的狀態. 本次實例為同步業務,理想狀態下,只有全部成功或全部失敗兩種情況. 正式開始 正常流程 一切安好. 中途異常 補償成功 雖然發生了失敗,但所有補償都成功了.沒有什麼問題 ...
  • 哎呀呀哎呀呀,沒想到距離上一次打卡已經過去N天了,這N天有點難熬呀。一邊趕著項目,一邊又盯著留言,生怕有人催更,這不,昨天就有留言來催更了,哈哈哈哈。真的是想什麼來什麼。 簡單說下這N天的狀況哈,國慶去了趟西安,聆聽了西安的歷史,感覺棒棒噠。但是,西安和浙江國慶期間溫度天壤之別,小編回到浙江之後,就 ...
  • 前言 今天我們介紹的是責任鏈模式【Chain of Responsibility Pattern】。對於責任鏈模式理解起來還是比較容易的。例如在公司請假、三天以內部門經理批准即可,但是三到七天可能就需要總監批准了、七天以上需要副總裁批准。對於這麼一個需求最初的解決方案就是if-else語句判斷。但是 ...
  • 工廠方法模式 簡單工廠模式有一個問題就是,類的創建依賴工廠類。 如果想要拓展程式,必須對工廠類進行修改,這違背了閉包原則,所以,從設計角度考慮,有一定的問題,如何解決? 就用到工廠方法模式,創建一個工廠介面和創建多個工廠實現類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的代 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...