最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java的運算符和程序邏輯控制你了解嗎

 更新時間:2022年03月13日 17:41:31   作者:蔡欣致  
這篇文章主要為大家詳細介紹了Java的運算符和程序邏輯控制,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

運算符

運算符,顧名思義就是用來執(zhí)行數學運算的。在Java中運算符可以分為:算術運算符、關系運算符、邏輯運算符、位運算符、移位運算符、條件運算符等。

算術運算符

基本四則運算符(+ - * / %)

這里與C語言基本一致,但是還要記住的是:1. 都是二元運算符,使用時必須要有左右兩個操作數;2. int / int結果還是int類型,而且會向下取整。

增量運算符(+= -= *= /= %=)

這種類型運算符操作完成后,會將操縱的結果賦值給左操作數(與C語言類似)。

注意:只有變量才能使用該運算符,常量不能使用。

自增/自減運算符(++ --)

這里也是和C語言相同的,前置++是先+1,然后再再使用變量+1之后的值;后置++是先使用變量原來的值,表達式結束時再給變量+1,前置--/后置--也是類似的。

注意:只有變量才能使用自增/自減運算符,常量是不能夠使用的,因為常量是不允許被修改的。

關系運算符

關系運算符主要有以下幾個:==   !=   <   >   <=   >=,他們在進行計算后會得出的結果是true/false(也就是布爾類型)

其中有一點值得注意的是:當需要進行多次判斷的時候

public class TestDemo {
    public static void main(String[] args) {
        int a=4;
        if(3<a<5){
            System.out.println(a);
        }
    }
}

是不能夠像上面的這段代碼那樣連著寫的,這樣會報錯,而應該像下面的代碼一樣:

public class TestDemo {
    public static void main(String[] args) {
        int a=4;
        if(3<a&&a<5){
            System.out.println(a);
        }
    }

但是上面這段在Java中錯誤的代碼,在C語言中卻不會報錯,在C語言中是會先判斷3是否小于a,發(fā)現確實是小于,澤會將其變?yōu)?,再判斷1是否小于5,發(fā)現是就直接執(zhí)行了這個if語句。但是計算機中這樣的執(zhí)行方式肯定是和我們元本的意愿是不符符,所以從這個方面又可以看出Java相對C語言安全性是更高的(因為Java在這個時候會就直接報錯)。

邏輯運算符

邏輯運算符在所有運算符里面算得上是比較重點的,其中,邏輯運算符主要有三個:&&  ||  !,其運算結果都是布爾類型(true/false)。

邏輯與(&&)

語法是:布爾表達式&&布爾表達式(注意:左右表達式應該都是布爾類型)

與C語言相同:

1. 只有兩個表達式都為真,結果才為真;兩表達式只要有一個是假,那結果就是假。

2. 遵循短路求值:如果左側表達式為假,那么結果就一定是假,不會計算右側的表達式。

與C語言不同:單純使用&時,如果表達式結果為布爾類型,也可以表示邏輯與,但是不會遵循短路求值。 

public class TestDemo {
    public static void main(String[] args) {
        int a=10;
        System.out.println(a>20 & a/0 == 0);   //err
    }
}

邏輯或(||)

語法是:布爾表達式||布爾表達式(注意:左右表達式應該都是布爾類型)

與C語言相同:

1. 兩表達式只要有一個是真,那結果就是真;只有兩個表達式都為假,結果才為假。

2.  遵循短路求值:如果左側表達式為真,那么結果就一定是真,不會計算右側的表達式。

與C語言不同:單純使用|時,如果表達式結果為布爾類型,也可以表示邏輯或,但是不會遵循短路求值。  

public class TestDemo {
    public static void main(String[] args) {
        int a=10;
        System.out.println(a<20 | a/0 == 0);   //err
    }
}

邏輯非(!)

語法是:!表達式

與C語言相同:真變假,假變真。 

位運算符

我們知道字節(jié)是最小的存儲單位,Java也不例外,在Java中數據存儲的最小單位是字節(jié),而數據操作的最小單位是比特位。其每個字節(jié)是由8個二進制比特位組成的,多個字節(jié)組合在一起可以表示各種不同的數據。

位操作表示按二進制位運算。計算機中都是使用二進制來表示數據的(01構成的序列),按位運算就是在按照二進制位的每一位依次進行計算。

位運算符主要有以下四個:&  |  ~  ^(其中除了~是一元運算符以外,其余的都是二元運算符)。這部分知識基本與C語言一模一樣(當做鞏固,具體見之前文章或者題目)。

按位與(&)

兩個二進制位都是1,則結果是1,否則結果為0(注意:只能是整數(int/short/long/byte)的時候)。

按位或(|)

兩個二進制為都是0,則結果是0,否則結果為1(注意:只能是整數(int/short/long/byte)的時候)。

按位取反(~)

把所有二進制位0轉為1,1轉為0。

按位異或(^)

兩個數字的二進制相同,則結果為0;相異的結果則為1。

移位運算

移位運算符主要有三個:<<  >>  >>>,且都是二元運算符,都是按照二進制比特位來運算的。

左移(<<)

與C語言一樣:

1. 最左側位舍去,最右側補0(注意:左移時,丟棄的是符號位,因此正數左移可能會變成負數)。

2. 左移一位相當于原數字*2;左移N位相當于原數字*2的N次方。

右移(>>)

與C語言一樣:

1. 最右側位舍棄,最左側不符號位(正數補0,負數補1)。

2. 右移一位相當于原數字/2;左移N位相當于原數字/2的N次方。

無符號右移(>>>)

無符號右移在C語言中是沒有的,其作用是:最右側位舍棄,最左側補0。

小結

1. 進行移位運算相對于直接做乘除效率會高一些,所以當某個代碼正好需要乘除2的N次方的時候就可以使用移位運算。

2. 對負數進行移位運算,會得出向上取負數的整的值,導致其運算的結果與直接做除法的結果不相同。

public class TestDemo {
    public static void main(String[] args) {
        System.out.println(-3>>1);   //-2
        System.out.println(-3/2);   //-1
    }
}

條件運算符

語法是:布爾表達式1?表達式2:表達式3(當布爾表達式1的值為ture,整個表達式的值為表達式2的值;當布爾表達式1的值為flase,整個表達式的值為表達式3的值)。

這是唯一的一個條件運算符,也是唯一一個三目運算符。

注意的點:

1. 表達式2和表達式3的結果是要同類型的,除非是能夠發(fā)生類型隱式類型轉換的。

2. 表達式是不能單獨存在的,其產生的結果必須要被使用。 

程序邏輯控制

Java中程序的邏輯控制語句

分支語句

在Java中,分支語句有兩種:if語句和switch語句。大部分與C語言中的語法一樣(詳細可以看之前C語言文章),但是還有幾點需要注意:

1. 在if語句中的判斷表達式必須是布爾表達式

2. 懸垂else問題也是和C語言一樣,匹配的是其最近的if

3. 在switch語句中,多個case后的常量值是不可以重復的

4. switch語句的括號內只能是下面的幾種類型:

(1)基本類型:byte、char、short、int(注意不能是long類型)

(2)引用類型:String常量串、枚舉類型

循環(huán)結構

在Java中,循環(huán)語句有三種:while循環(huán)、for循環(huán)、do……while循環(huán)。大部分與C語言中的語法一樣(詳細可以看之前C語言文章),但是還有幾點需要注意:

1. 使用while循環(huán)的時候的循環(huán)條件必須是布爾類型

2. 使用for循環(huán)的時候循環(huán)條件(也就是第二個表達式)也必須是布爾表達式

3. do while循環(huán)的循環(huán)條件也必須是布爾表達式且是在第一次執(zhí)行語句塊之后才進行判斷

4. break的功能是讓循環(huán)提前結束

5. continue的功能是跳過本次循環(huán),立刻進入下一次循環(huán)執(zhí)行

Java中的輸入輸出方式

輸出到控制臺

有以下這三種方法:

public class TestDemo {
    public static void main(String[] args) {
        System.out.println(10);     //輸出帶換行
        System.out.print(10);       //輸出不換行
        System.out.printf("%d",10); //格式化輸出
    }
}

從鍵盤輸入

1. 使用Scanner讀取字符串/整數/浮點數

案例1:

import java.util.Scanner;
public class TestDemo {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("請輸入姓名:");
        String name=sc.nextLine();
        System.out.print("請輸入年齡:");
        int age=sc.nextInt();
        System.out.print("請輸入工資:");
        float money=sc.nextFloat();
        System.out.println("信息如下:");
        System.out.println("姓名:"+name+"\n"+"年齡:"+age+"\n"+"工資:"+money);
        sc.close();
    }
}

2.使用Scanner循環(huán)讀取N個數字

案例2:

import java.util.Scanner;
public class TestDemo {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextInt()){
            int num=sc.nextInt();
            System.out.println(num);
        }
    }
}

注意:

1. 當循環(huán)輸入多個數據的時候,可以使用Ctrl+D來結束運行

2. 當使用完Scanner進行輸入的時候,需要將其close掉

鞏固練習

下面引出一個猜數字游戲練習來鞏固程序邏輯控制。

系統自動生成一個隨機數(1-100),輸入一個數字,如果輸入的數比該數小,則輸出“猜小了”;如果輸入的數比該數達,則住處“猜大了”;否則輸出“猜對了”。

實現代碼:

import java.util.Random;
import java.util.Scanner;
public class TestDemo {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        Random random=new Random();//在此處填值可以使這個隨機數一致都是同一個數
        //int randNum=random.nextInt(100)+1;//1-100(方法一)
        int randNum=(int)(Math.random()*100+1);//1-100(方法二)
        while(true){
            System.out.print("請輸入:");
            int num=sc.nextInt();
            if(num<randNum){
                System.out.println("猜小了");
            }else if(num>randNum){
                System.out.println("猜大了");
            }else{
                System.out.print("猜對了");
                break;
            }
        }
    }
}

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容! 

相關文章

  • Java實現爬蟲給App提供數據(Jsoup 網絡爬蟲)

    Java實現爬蟲給App提供數據(Jsoup 網絡爬蟲)

    這篇文章主要介紹了Java實現爬蟲給App提供數據,即Jsoup 網絡爬蟲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Java二叉樹的四種遍歷(遞歸和非遞歸)

    Java二叉樹的四種遍歷(遞歸和非遞歸)

    這篇文章主要介紹了Java二叉樹的四種遍歷,二叉樹的遍歷可以分為前序、中序、后序、層次遍歷,需要的朋友可以參考下
    2020-12-12
  • 關于Java集合框架的總結

    關于Java集合框架的總結

    下面小編就為大家?guī)硪黄P于Java集合框架的總結。小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • 如何通過Java生成一個隨機數

    如何通過Java生成一個隨機數

    當我們需要在Java中生成隨機數時,可以借助JDK中提供的Random類來實現,通過使用Random類,我們可以輕松地生成各種類型的隨機數,下面我們就來看看如何利用Random類生成隨機數吧
    2023-09-09
  • Mybatis-plus一對多分頁數據條數不正確的處理

    Mybatis-plus一對多分頁數據條數不正確的處理

    這篇文章主要介紹了Mybatis-plus一對多分頁數據條數不正確的處理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Mac OS X 下 IntelliJ IDEA、jEdit 等 Java 程序中文標點輸入無效的完美解決方法

    Mac OS X 下 IntelliJ IDEA、jEdit 等 Java 程序中文標點輸入無效的完美解決方法

    Mac OS X 下基于 Java 的程序會出現中文標點輸入無效的問題,在中文輸入法狀態(tài),可以輸入中文字,但輸入中文標點最后上去的是英文標點.這篇文章主要介紹了Mac OS X 下 IntelliJ IDEA、jEdit 等 Java 程序中文標點輸入無效的完美解決方法,需要的朋友可以參考下
    2016-10-10
  • MyBatisPlus使用${ew.customSqlSegment}別名問題解決

    MyBatisPlus使用${ew.customSqlSegment}別名問題解決

    在使用MyBatisPlus進行連表查詢時,可能遇到因${ew.customSqlSegment}無法加別名的問題,本文就來介紹一下如何解決,感興趣的可以了解一下
    2024-10-10
  • ssm項目改造spring?boot項目完整步驟

    ssm項目改造spring?boot項目完整步驟

    Spring?Boot現在已經成為Java開發(fā)領域的一顆璀璨明珠,它本身是包容萬象的,可以跟各種技術集成,下面這篇文章主要給大家介紹了關于ssm項目改造spring?boot項目的相關資料,需要的朋友可以參考下
    2023-04-04
  • 詳解idea maven nexus 常見命令配置

    詳解idea maven nexus 常見命令配置

    這篇文章主要介紹了idea maven nexus 常見命令配置的相關知識,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • mybatis分割字符串并循環(huán),實現in多個參數的操作

    mybatis分割字符串并循環(huán),實現in多個參數的操作

    這篇文章主要介紹了mybatis分割字符串并循環(huán),實現in多個參數的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論

长垣县| 威远县| 共和县| 德昌县| 筠连县| 宣城市| 砀山县| 聂荣县| 青田县| 康马县| 阳城县| 彭泽县| 芜湖市| 皋兰县| 咸丰县| 银川市| 柘城县| 慈溪市| 金阳县| 武邑县| 类乌齐县| 谷城县| 汤原县| 天台县| 炎陵县| 永丰县| 柳林县| 桓台县| 柳江县| 平度市| 梨树县| 定远县| 深圳市| 雷州市| 信宜市| 通山县| 紫云| 仙游县| 江华| 兴安县| 鲁山县|