欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一篇文章讓你弄懂Java運算符

 更新時間:2022年03月22日 10:20:52   作者:加勒比海濤  
java中位運算符主要有按位與&、按位或|、按位非~、按位異或^, 在使用時需要將運算數(shù)都轉(zhuǎn)換為二進制再進行運算,若為負數(shù)則使用補碼表示,這篇文章主要給大家介紹了關(guān)于Java運算符的相關(guān)資料,需要的朋友可以參考下

1. 運算符是什么?

1.1 定義:

  • 對常量和變量進行運算操作的符號
  • 程序?qū)?shù)據(jù)進行運算時要用運算符

1.2 常見運算符的概述

image-20220315143205172

1.3 表達式

1.3.1 定義

用運算符把常量或變量連接起來的式子

1.3.2 表達式的類型

表達式的類型為表達式運算結(jié)果的數(shù)據(jù)類型

2. 算數(shù)運算符

2.1 分類:

image-20220315143420004

2.2 基本四則運算符:加減乘除模(+ - * / %)

注意事項:

/ :除法運算符,得到兩個數(shù)據(jù)相除的。

特點:Java中整數(shù)除以整數(shù)結(jié)果還是整數(shù)。

%:取模(取余)運算,得到兩個數(shù)據(jù)相除的余數(shù)。

特點:可以用來判斷兩個數(shù)是否能夠整除。

應用:

public class ArithmeticOperators {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);
        System.out.println(a%b);
    }
}

運行結(jié)果如下:

image-20220315143754758

在Java中,小數(shù)也可以進行取模操作

public class ArithmeticOperators {
    public static void main(String[] args) {
        System.out.println(10%3);
        System.out.println(12.5%2);
        System.out.println(12.5%2.0);
    }
}

image-20220315144444691

易錯點1:除數(shù)不能為0

public class ArithmeticOperators {
    public static void main(String[] args) {
        int a = 10;
        int b = 0;
        System.out.println(a/b);
    }
}

會報錯! Java里面,把程序在編譯/運行的過程當中 產(chǎn)?的不正常的?為 叫做異常,圖片里面的就是算術(shù)異常

image-20220315144021194

易錯點2:在java中,負數(shù)也是可以參與取模運算的

public class ArithmeticOperators {
    public static void main(String[] args) {
        System.out.println(10%3);//1
        System.out.println(10%-3);//1
        System.out.println(-10%3);//-1
        System.out.println(-10%-3);//-1
    }
}

具體計算步驟(小學計算也很容易出錯熬):

image-20220315144737931

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

該種類型運算符操作完成后,會將操縱的結(jié)果賦值給左操作數(shù)。

public class IncOpr {
    public static void main(String[] args) {
        int a = 1;
        a += 2;
        System.out.println(a);
        
        a -= 1;
        System.out.println(a);
        
        a *= 3;
        System.out.println(a);
        
        a /= 3;
        System.out.println(a);
        
        a %= 3;
        System.out.println(a);
    }
}

image-20220315145216352

增量運算符會自動幫我們進行數(shù)據(jù)轉(zhuǎn)換

public class IncOpr {
    public static void main(String[] args) {
        int a = 99;
        short s = 0;
        //s = s + a;//err:報錯,short+int->int+int=>int,用short裝不下,需要強轉(zhuǎn)
        //正確寫法1:
        //s = (short)(s + a);
        //正確寫法2:
        s += a;//+=會自動幫我們進行類型轉(zhuǎn)換

        System.out.println(a);//99
    }
}

image-20220315145705652

2.4 自增/自減運算符(++,–)

++:自增1

– :自減1

  • 單獨使用:放在變量前或后結(jié)果一樣
  • 參與運算:
    • 在變量前,先自增(自減) ,再進行其它運算
    • 在變量后,先以原值進行其它運算,再自增(自減)

舉個栗子:

public class IncrementdecrementOpr {
    public static void main(String[] args) {
        int a = 10;
        
        int b = ++a;//a=a+1;b=a;->b=11 a=11
        int c = a++;//b=a;a=a+1;->b=10 a=11;

        System.out.println(b);
    }
}

3. 關(guān)系運算符

常見關(guān)系運算符

image-20220315150736089

關(guān)系運算符的運算結(jié)果都是布爾(boolean)類型,要么是true,要么是false

public class RelationalOpr {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a==b);
        System.out.println(a!=b);
        System.out.println(a>=b);
        System.out.println(a<=b);
    }
}

結(jié)果如下:

image-20220315151138494

注意:當需要多次判斷時,不能連著寫,比如:3<a<5 ,程序與數(shù)學中是有區(qū)別的

4. 邏輯運算符

定義:用于判斷“并且”、“或者”、“除非”等邏輯關(guān)系。邏輯運算符兩端一般連接值為布爾類型的關(guān)系表達式

4.1 &&:邏輯與,并且

也稱短路與

布爾表達式1 && 布爾表達式2:兩個表達式都為真的時候,整個表達式才是真

  • 只要有?個是假,那整個表達式就是假
  • 第?個表達式為假,后?不執(zhí)?

舉個栗子:

public class LogOperators {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;

        System.out.println(a == 1 && b == 2);
        System.out.println(a == 1 && b > 100);
        System.out.println(a > 100 && b == 2);
        System.out.println(a > 100 && b > 100);
    }
}

image-20220315152224389

4.2 ||:邏輯或,或者

布爾表達式1 || 布爾表達式2:只要有?個是真,整個表達式就是真

  • 布爾表達式1為真,不執(zhí)?布爾表達式2
  • 布爾表達式1為假,會繼續(xù)布爾表達式2

舉個栗子:

public class LogOperators {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;

        System.out.println(a == 1 || b == 2);
        System.out.println(a == 1 || b > 100);
        System.out.println(a > 100 || b == 2);
        System.out.println(a > 100 || b > 100);
    }
}

image-20220315152433746

4.3 !:邏輯非,表示否定

語法規(guī)則:!表達式

真變假,假變真。

舉個栗子:

public class LogOperators {
    public static void main(String[] args) {
        int a = 1;
        System.out.println(!(a==1));
        System.out.println(!(a!=1));
    }
}

image-20220315152806193

4.4 短路求值

&&和||遵循短路求值的規(guī)則

System.out.println(10 > 20 && 10 / 0 == 0);       // 打印 false
System.out.println(10 < 20 || 10 / 0 == 0);       // 打印 true

我們都知道,計算10 / 0會導致程序拋出異常.但是上面的代碼卻能正常運行,說明10 / 0并沒有真正被求值.

&|如果表達式結(jié)果為boolean時,也表示邏輯運算.但與&& ||相比,它們不支持短路求值.

System.out.println(10 > 20 & 10 / 0 == 0);       // 程序拋出異常
System.out.println(10 < 20 | 10 / 0 == 0);       // 程序拋出異常

5. 位操作符

如果位操作符,左右兩邊不是布爾表達式,那么他就代表位運算,且位運算操作的是二進制位

5.1 按位與&

對應位上有0就是0,對應位都是1的時候,這?位運算下來的結(jié)果就是1

image-20220315164041104

5.2 按位或|

對應位上有1,就是1

image-20220315164134072

5.3 按位異或

不?樣的位上進?或,?樣的位上是0

推論:哪?位上是1,那么這?位置上就不同

image-20220315164644571

5.4 按位取反~

0變1,1變0

image-20220315164727512

int a = 0x0000000f;
System.out.printf("%x\n", ~a);//fffffff0
?六進制:1 2 3 4 5 6 7 8 9 A B C D E F
0000 0000 0000 0000 0000 0000 0000 1111
1111 1111 1111 1111 1111 1111 1111 0000 ~
  f    f    f    f    f    f    f   0

6. 移位運算

移動的是二進制位

6.1 左移<<

最左側(cè)位不要了,最右側(cè)補0

用法舉例:

public class shftOperation {
    public static void main(String[] args) {
        int a = 0x10;
        System.out.printf("%x\n",a << 1);
    }
}

image-20220315165821062

6.2 右移>>

最右側(cè)位不要了,最左側(cè)補符號位(正數(shù)補0,負數(shù)補1)

用法舉例:

public class shftOperation {
    public static void main(String[] args) {
        int a = 0x10;
        System.out.printf("%x\n",a >> 1);
    }
}

image-20220315170102607

注意:沒有?符號數(shù)左移,因為第?位是符號位,移的話把符號位移?了

6.3 無符號右移>>>

最右側(cè)位不要了,最左側(cè)補0

用法舉例:

public class shftOperation {
    public static void main(String[] args) {
        int a = 0xffffffff;
        System.out.printf("%x\n",a >>> 1);//7fffffff
    }
}

7. 條件運算符

語法格式:表達式1?表達式2:表達式3

如果表達式1為真,執(zhí)?表達式2,否則執(zhí)?表達式3

要么返回表達式2的結(jié)果,要么返回表達式3的結(jié)果,所以需要變量來接收

注意:表達式1必須是一個布爾表達式

用法舉例:

public class CondOpr {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = a>b?a:b;
        System.out.println(c);//20
    }
}

8.運算符的優(yōu)先級

就一句話:不確定的話,就加括號!

在Java中,對于運算符的優(yōu)先級考察不多,不像C語言那樣。

到此,對于Java中運算符的講解已經(jīng)完畢。

運算符之間是有優(yōu)先級的. 具體的規(guī)則我們不必記憶. 在可能存在歧義的代碼中加上括號即可

public class Swap {
? ? public static void main(String[] args) {
? ? ? ? System.out.println(3*4+1);
? ? ? ? System.out.println(3*(4+1));

? ? }
}

到此這篇關(guān)于Java運算符的文章就介紹到這了,更多相關(guān)Java運算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SVN 安裝教程之服務器和客戶端

    SVN 安裝教程之服務器和客戶端

    這篇文章主要介紹了SVN 安裝教程之服務器和客戶端的相關(guān)資料,這里對安裝步驟進行了詳細介紹,需要的朋友可以參考下
    2016-11-11
  • Java虛擬機棧jvm棧的作用

    Java虛擬機棧jvm棧的作用

    本文主要介紹了Java虛擬機棧jvm棧的作用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java 語言實現(xiàn)清除帶 html 標簽的內(nèi)容方法

    Java 語言實現(xiàn)清除帶 html 標簽的內(nèi)容方法

    下面小編就為大家?guī)硪黄狫ava 語言實現(xiàn)清除帶 html 標簽的內(nèi)容方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 深入理解java泛型Generic

    深入理解java泛型Generic

    這篇文章主要介紹了深入理解java泛型Generic,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • 面試官:詳細談談Java對象的4種引用方式

    面試官:詳細談談Java對象的4種引用方式

    這篇文章主要給大家介紹了java面試官常會問到的,關(guān)于Java對象的4種引用方式的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • 淺談Java基于Consul創(chuàng)建分布式鎖

    淺談Java基于Consul創(chuàng)建分布式鎖

    這篇文章主要介紹了淺談基于Consul創(chuàng)建分布式鎖,Consul是HashiCorp公司推出的開源工具,用于實現(xiàn)分布式系統(tǒng)的服務發(fā)現(xiàn)與配置Consul是分布式的、高可用的、可橫向擴展的,需要的朋友可以參考下
    2023-07-07
  • JAVA字符串拼接常見方法匯總

    JAVA字符串拼接常見方法匯總

    這篇文章主要介紹了JAVA字符串拼接常見方法,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • intellij idea 啟動tomcat 1099端口被占用的解決

    intellij idea 啟動tomcat 1099端口被占用的解決

    這篇文章主要介紹了intellij idea 啟動tomcat 1099端口被占用的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • spring boot+ redis 接口訪問頻率限制的實現(xiàn)

    spring boot+ redis 接口訪問頻率限制的實現(xiàn)

    這篇文章主要介紹了spring boot+ redis 接口訪問頻率限制的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Spring mvc服務端數(shù)據(jù)校驗實現(xiàn)流程詳解

    Spring mvc服務端數(shù)據(jù)校驗實現(xiàn)流程詳解

    這篇文章主要介紹了Spring mvc服務端數(shù)據(jù)校驗實現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09

最新評論