1. 程式人生 > 其它 >Java基礎:基本運算子

Java基礎:基本運算子

基本運算子

二元運算子

  • Java語言支援如下運算子:

    • 算術運算子:+,-,*,/,%,++,--

    • 賦值運算子:=

    • 關係運算符:>,<,>=,<=,==,!=,instanceof

    • 邏輯運算子:&&,||,!

    • 位運算子:&,|,^,~,>>,<<,>>>

    • 條件運算子:? :

    • 擴充套件賦值運算子:+=,-=,*=,/=

  • Ctrl + D:複製當前行到下一行

  • 二元運算子

    • 加:+

    • 減:-

    • 乘:*

    • 除:/

    • 注意:除法運算產生小數時,需要強轉一下,轉任意一個數就行,剩下的會自動型別轉換,否則小數部分丟失

    • 模運算(取餘):%

int a = 10;
int b = 20;
int c = 25;
int d = 25;


System.out.println(a+b);//30
System.out.println(a-b);//-10
System.out.println(a*b);//200
System.out.println((float)a/b);//0.5 //強轉

//取餘,模運算
System.out.println(c%a);// c/a 25/10=2...5

  • 計算結果型別問題

    • 如果整數運算裡Long型別,結果為Long;

    • 如果整數運算裡沒有Long型別,結果都為Int;

    • 如果運算裡Double,結果一定為為Double;

    • 如果運算裡Float沒有Double,結果一定為Float;

  • 加號 + 的特殊用法

    • 字串連線符 + ,"String1"+"String2",用來連線兩個字串的符號

    • 字串與變數用"+"連線時,字串前面+號還是運算子,而字串後面的+號全部變為字串連線符

    • 括號內的運算子優先進行

        int a = 10;
int b = 20;
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
System.out.println(a+b+""+a+b);//301020
System.out.println(a+b+""+(a+b));//3030//括號內優先進行
System.out.println(a+b+""+a*b);//30200//其他運算子不受影響

關係運算符

  • 關係運算符的返回結果:正確,錯誤(true,false),即一個布林(boolean)型別

  • 關係運算符 經常與 if 判斷 組合使用

  • 大於:> 大於等於:>=

  • 小於:< 小於等於:<=

  • 等於:==

  • 不等於:!=

    //關係運算符  返回結果:正確,錯誤 -- 布林值
//與if大量使用

int a = 10;
int b = 20;
int c = 22;

System.out.println(a>b);//false
System.out.println(a<b);//true
System.out.println(a==b);//false
System.out.println(a!=b);//true

一元運算子 與 Math類

  • 一元運算子即 自增自減 非常重要,非常重要,非常重要

  • a++ :在這一行中不執行自增操作,自增在下一行才執行

  • ++a:自增先執行,再進行之後的操作。(優先順序高)

  • Math類在很多運算時會用到

package operator;

public class Demo04 {
public static void main(String[] args) {
//非常重要
// ++ -- 自增,自減 一元運算子
int a = 3;

int b = a++; // a++:執行完這行程式碼後,先給b賦值,再自增

//b = a++;等價於 b = a; a = a+1;

System.out.println(a);
System.out.println(b);
System.out.println("\n");

int c = ++a; //++a:執行完這行程式碼前,先自增,再賦值給b

System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println("\n");

//冪運算 2^3 2*2*2 = 8,很多運算我們會使用一些工具類來操作
double pow = Math.pow(2,3);
System.out.println(pow);
}
}

邏輯運算子

  • 與:&& ,兩邊都為真,則結果為真

  • 或:|| ,兩邊都為假,則結果為假,否則結果為真

  • 非:! ,取反,運算元為真則結果為假,運算元為假則結果為真

      //與(and) 或(of) 非(取反)
boolean a = true;
boolean b = false;

System.out.println("a && b:"+(a && b));//false //括號裡面優先運算//邏輯與運算:兩個都為真,則為真
System.out.println("a || b:"+(a || b));//true //邏輯或運算:一個為真,則為真,兩個為假則為假
System.out.println("!(a && b):"+!(a && b));//true //邏輯非運算:如果為真則為假,如果為假則為真
  • 與:短路運算

//短路運算
int c = 5;
boolean d = (c<4)&&(c++<4);//前半部分(c<4)為假,與運算有假必為假,則不執行後面的(c++<4),即短路
System.out.println(c);//c++不執行,c=5
System.out.println(d);//false

位運算

  • 按位與:& :兩個都為1則結果為1,只要有0結果為0

  • 按位或:| :只要有1結果為1,兩個都為0則結果為0

  • 按位取反(非):~ :0變1,1變0

  • 異或:^ :相同為0,不同為1

位運算: &(與),|(或),~(非,取反)
A=0011 1100
B=0000 1101

A&B=0000 1100 //按位與
A|B=0011 1101 //按位或
A^B=0011 0001 //位異或
~B =1111 0010 //按位非,取反

  • 效率極高的位運算:

    • 乘以2相當於左移一個位 <<

    • 除以2相當於右移一個位 >>

    /*
效率極高的位運算!!!
<< *2 乘以2相當於左移一個位
>> /2 除以2相當於右移一個位

0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
0000 0011 3
0000 0110 6
0000 1100 12
*/

//2^3 = 2*2*2 = 8,用位運算來代替,效率極高!
System.out.println(2<<2);

擴充套件賦值運算子

  • 即偷懶運算子:+=,-=,*=,/=

  • a+=b :a = a+b

  • a-=b :a = a-b

  • a*=b :a = a *b

  • a/=b :a = a/b

三元運算子

三元運算子必須掌握

三元運算子必須掌握

三元運算子必須掌握

? :

x ? y : z :如果x為真,則輸出y;如果x為假,則輸出z。

int score = 60;
String type = score < 60 ? "不及格" : "及格";
System.out.print(type);//及格

運算子的優先順序

優先順序順序:

高——>——>低
括號 乘除 加減 關係運算符 邏輯運算子:非(取反) 邏輯運算子:與 邏輯運算子:或
() * / + - > < >= <= == != ! && ||

int a = 10;
int b = 15;
int c = 20;
int d = 30;

System.out.println(a>b && a<c || c>b);// true //&&>||
System.out.println(a<b || a>c && c<b);//true //&&>||
System.out.println(!(a>b) && (a>c) );//false //!>&&