Java基礎(chǔ)-運算符

  • 運算符
    對常量和變量進(jìn)行操作的符號稱為運算符
  • 表達(dá)式
    用運算符把常量或者變量連接起來符號的java語法的式子就可以稱為表達(dá)式。
    不同運算符連接的式子體現(xiàn)的是不同類型的表達(dá)式。
  • 常用運算符
    算術(shù)運算符、賦值運算符、關(guān)系運算符(比較運算)、邏輯運算符和三元運算符。

算數(shù)運算符(掌握)

算數(shù)運算符概述

算術(shù)運算:和數(shù)學(xué)中的算術(shù)運算基本一致。
運算符號: + - *(×) /(÷) % (算余數(shù) 模運算) ++(自增) --(自減)
算術(shù)運算規(guī)則

  1. 在Java中進(jìn)行算術(shù)運算的時候,運算符兩側(cè)的類型一致的時候,運算的結(jié)果必須和運算的數(shù)據(jù)類型保持一致。

int d = 4321 / 1000* 1000;
4321 是int類型數(shù)據(jù)
1000 是int類型數(shù)據(jù)
他們的商 必須是int類型
故4321 /1000 結(jié)果是 4 不是4.321

  1. 當(dāng)算術(shù)運算兩側(cè)的類型不一致的時候,結(jié)果向大的類型保持。

double d = 4321 / 1000.0* 1000;
4321 是int類型數(shù)據(jù)
1000.0 是double類型數(shù)據(jù)
他們的商 保持大類型double
故4321 /1000.0 不是4.321

public class ArithmeticOperator {
    public static void main(String[] args) {

        // 定義兩個變量
        int a = 3;
        int b = 4;

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

        System.out.println(4321 / 1000 * 1000);//4000
        System.out.println(4321 / 1000.0 * 1000);//4321.0
    }
}

算數(shù)運算符取余和除法的區(qū)別

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

10 % 4 = 2
4 % 10 = 4
20 % 3 = 2
/: 除法運算符,得到是兩個相除數(shù)據(jù)的商。

拓展:任何一個正整數(shù),模(%)2,結(jié)果要么是零, 要么是1。故我們經(jīng)常通過將一個數(shù)對2取模以確定被除數(shù)的奇偶性。

字符和字符串參與加法操作

字符與+運算:
其實是拿該字符對應(yīng)的數(shù)值來操作
‘a(chǎn)’ 97
‘A’ 65
‘0’ 48
字符串與+運算:
在Java中如果讓字符串和+進(jìn)行運算,這時這個+號變成連接符,它會把當(dāng)前這個字符串和+號后面的內(nèi)容連接成一個更長的字符串。

/*
 * 1整數(shù)的加法。
 * 字符參與加法操作。拿字符在計算機中底層存儲對應(yīng)的數(shù)據(jù)值來參與運算的。
 *      '0'     48
 *      'a'     97
 *      'A'     65
 * 字符串參與加法操作。
 *      這里的+其實不是加法,而是字符串連接符。
 */
public class CharAdd {
    public static void main(String[] args) {
        // 整數(shù)加法
        int a = 10;
        int b = 20;
        System.out.println(a + b);
        System.out.println("------------------");

        // 字符參與加法操作
        char c = '0';
        char c2 = 'a';
        System.out.println(a + c);//58
        System.out.println(a + c2);//107
        System.out.println("------------------");

        // 字符串參與加法操作
        System.out.println("hello" + a);
         // "hello"+10,然后再和b進(jìn)行拼接
        System.out.println("hello" + a + b);//hello1020 
         //30hello
        System.out.println(a + b + "hello");
    }
}

算數(shù)運算符++和- - 的用法

++(自加,自增),--(自減)運算符:對變量做加1或者減1的操作。
++或者--既可以放在變量的后面,也可以放在變量的前面。

表現(xiàn)形式:
++或者--在變量的右側(cè),舉例:i++,j--;
++或者--在變量的左側(cè),舉例:++i,--j;

單獨使用的時候:
++或者--無論是放在變量的前面還是后面,結(jié)果是一樣的。
參與操作的時候:
如果++或者--在變量的后面(右側(cè)),先拿變量參與操作,后變量做++或者--;
如果++或者--在變量的前面(左側(cè)),先變量做++或者--,后拿變量參與操作;

public class SelfOperation {
    public static void main(String[] args) {
        int a = 10;
        System.out.println("a:" + a);//a:10

        // 單獨使用
        a++;
        ++a;
        System.out.println("a:" + a);//a:11

        // 參與操作使用
        int b = a++;//a:11 b:10
        int b = ++a;//a:11 b:11
        System.out.println("a:" + a);
        System.out.println("b:" + b);
    }
}

賦值運算符

賦值運算符分類

基本的賦值運算符:=
混合的賦值運算符:+=,-=,*=,/=,%=
如:
+=: a+=20;相當(dāng)于a = (a的數(shù)據(jù)類型)(a + 20);

/*
 * 賦值運算符:
 *      A:基本    =
 *      B:混合    +=,-=,*=,...
 * 
 * +=:
 *      a+=20;
 *      相當(dāng)于
 *      a = (a的數(shù)據(jù)類型)(a + 20);
 */
public class AssignmentOperator {
    public static void main(String[] args) {
        // 把10賦值給int類型的變量a
        int a = 10;

        // += 把左邊和右邊的數(shù)據(jù)進(jìn)行運算,最后賦值給左邊。左邊的只能是變量
        a += 10;// 相當(dāng)于a = a + 10
        System.out.println("a:" + a);
        System.out.println("----------------------");

        byte s = 10;
        // s += 20; // 相當(dāng)于 s = s + 20;
        s = (byte) (s + 20);
        System.out.println("s:" + s);
    }
}

關(guān)系運算符(比較運算符)

基本使用及注意事項

關(guān)系運算符:==,!=,>,>=,<,<=
關(guān)系運算符的結(jié)果都是boolean型,也就是要么是true,要么是false。

注意事項:

  • 關(guān)系運算符“==”不能誤寫成“=”。
  • ==表示的是左右兩邊是否相等。如果相等結(jié)果為true,不等結(jié)果false
  • = 在Java中稱為賦值號。
/*
 * 比較運算符:
 */
class ComparisonOperator {
    public static void main(String[] args) {
        int a = 3;
        int b = 5;

        System.out.println(a > b);  
        //比較a和b空間中值的大小
        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);
    }
}

邏輯運算符

邏輯運算:就是針對命題的真假的或 、且(和、與)、非運算。

數(shù)學(xué)中的邏輯:
int i=3;
2<i<5
在java中不能像數(shù)學(xué)中那樣去寫,必須分開兩個表達(dá)式。
i>2 i<5
他們的中間就用邏輯運算符連接。

邏輯運算符概述

Java中的邏輯運算符:要求兩側(cè)的運算類型必須是boolean類型。邏輯運算符就是把多個boolean類型的值連接在一起。常見的邏輯運算符如下:
雙與(短路與)&& 單與 &
雙或(短路或)|| 單或 |
異或 ^ 非 !

運算規(guī)則

  1. 邏輯與運算規(guī)則:
    針對邏輯與運算:當(dāng)兩側(cè)都為true的時候,結(jié)果才為true。否則結(jié)果為false(一假即假)。
    true 與 true = true
    false 與 true = false
    true 與 false = false
    false 與 false = false

tips:
單與(&)和雙與(&&)的區(qū)別:
雙與(&&):它在進(jìn)行運算的時候,當(dāng)左側(cè)為false的時候,右側(cè)不會參與運算。
單與(&) :它在進(jìn)行運算的時候,不管左邊是什么,右邊都要運算。(遵守邏輯與運算規(guī)則)

class LogicalOperatorAnd {
    public static void main(String[] args) {
        boolean flag1=10>1;//true
        boolean flag2=10<1;//false
        boolean flag3=10>5;//true
        boolean flag4=10<5;//false
        //true&&true------>true
        System.out.println(flag1&&flag3);
        //false&&true------>false
        System.out.println(flag2&&flag3);
        //true&&false------>false
        System.out.println(flag1&&flag2);
        //false&&false------>false
        System.out.println(flag2&&flag4);
    }
}
  1. 或運算原則:
    針對邏輯或運算:當(dāng)兩側(cè)都為false的時候,結(jié)果才為false。否則結(jié)果為true(一真即真)。
    true 或 true = true
    false 或 true = true
    true 或 false = true
    false 或 false = false

tips:單或和雙或的區(qū)別:
||:當(dāng)左邊為true的時候,右側(cè)的不參與運算。
|:不管左邊是什么結(jié)果,右側(cè)都要運算。

class LogicalOperatorOr{
    public static void main(String[] args) 
    {
        boolean flag1=10>1;//true
        boolean flag2=10<1;//false
        boolean flag3=10>5;//true
        boolean flag4=10<5;//false
        //true||true------>true。
        System.out.println(flag1||flag3);
        //false||true------>true。
        System.out.println(flag2||flag3);
        //true||false------>true。
        System.out.println(flag1||flag2);
        //false||false------>false。
        System.out.println(flag2||flag4);
    }
}
  1. 邏輯異或:(了解)
    兩側(cè)相同,結(jié)果為false;兩側(cè)不同,結(jié)果為true。
    true ^ true = false
    false ^ true = true
    true ^ false = true
    false ^ false = false
  1. 非運算:
    !true 為false ,!false 為 true

結(jié)論:邏輯運算符的運算結(jié)果也是boolean類型。

三元運算符

三元運算符的格式

變量名 = 表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3;

三元運算符的運算原則

  1. 要求表達(dá)式1 運行的結(jié)果必須是一個boolean的結(jié)果。通過表達(dá)式1的這個結(jié)果確定到底是執(zhí)行表達(dá)式2還是表達(dá)式
  2. 當(dāng)表達(dá)式1為true,就把表達(dá)式2的結(jié)果作為三元運算的結(jié)果;當(dāng)表達(dá)式1為false的時候,把表達(dá)式3的結(jié)果作為三元運算的結(jié)果。
  3. 表達(dá)式1、表達(dá)式2、表達(dá)式3不能是語句,必須是表達(dá)式。
  4. 三元運算符運算后必須有結(jié)果。
class TernaryOperator {
    public static void main(String[] args) {
        /*
            利用三元運算算出最大值
        */
        //定義變量
        int a = 3;
        int b = 5;
        int max;
        max=a > b ? a : b;
        System.out.println(max);
    }
}

在運行上面程序的時候,JVM遇到了三元運算,這時JVM 會先執(zhí)行 a > b 這個表達(dá)式,3 > 5不成立
這時JVM 就會把變量b=5的結(jié)果作為三元運算的結(jié)果,賦值給max

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這里是我的個人博客 算術(shù)運算符 +號的多種意義: 當(dāng)+號的兩邊有一邊是字符串時,進(jìn)行的是字符串的拼接。 當(dāng)+號的兩...
    4fbd1dd77553閱讀 170評論 0 1
  • 算術(shù)運算符 符號:+,-,*,/,%,++,— — 意義:+:正號,加法,字符串連接符。/:整數(shù)相除,結(jié)果只能是整...
    姜水偉杰閱讀 419評論 1 0
  • 1. 算術(shù)運算符 概念 "+" 加法運算符 "-" 減法運算符 "*" 乘法運算符 "/" 除法運...
    地三千閱讀 389評論 0 0
  • 運算符是一種特殊的符號,用以表示數(shù)據(jù)的運算、賦值和比較等。 算術(shù)運算符 賦值運算符 符號: = (1)當(dāng)“=”兩側(cè)...
    向零而一閱讀 1,619評論 0 2
  • 六、運算符 6.1 概述: 6.2 分類: 6.2.1 算術(shù)運算符 加(+)減(-)乘(*)除(/)取余(%)前自...
    sexyhair閱讀 333評論 2 0

友情鏈接更多精彩內(nèi)容