1. 程式人生 > 實用技巧 >50. Pow(x, n)

50. Pow(x, n)

運算子

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

  • 賦值運算子:=

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

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

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

  • 條件運算子:?:

  • 拓展賦值運算子:+= -= *= /=

二元運算子

publicstaticvoidmain(String[]args) {
//二元運算子
inta=10;
intb=20;

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

運算拓展

  • 如果多個數運算時,裡面有Long,那麼結果型別為Long型別,否則全為Int型別。

  • 如果多個數運算時,裡面有double,那麼結果型別為double型別,否則全為float型別。

    publicstaticvoidmain(String[]args) {
    // 如果多個數運算時,裡面有Long,那麼結果型別為Long型別,否則全為Int型別。
    longa=134348837L;
    intb=13634;
    shortc=17;
    byted=2;

    System.out.println(a+b+c+d);//Long
    System.out.println(b+c+d);//Int
    System.out.println(c+d);//Int


    // 如果多個數運算時,裡面有double,那麼結果型別為double型別,否則全為float型別。
    floatf=12.8f;
    doublee=1248.87;

    System.out.println(f+e);//double
    System.out.println(f+f);//float
    }

關係運算符

publicstaticvoidmain(String[]args) {
// 關係運算符:正確or錯誤
inta=10;
intb=20;

System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}

自增自減運算子

publicstaticvoidmain(String[]args) {

// 自增
inta=3;
intb=a++;// 先賦值操作,再自加操作
intc=++a;// 先自加操作,再賦值操作

System.out.println(a);
System.out.println(b);
System.out.println(c);

// 自減
intd=3;
inte=d--;// 先賦值操作,再自減操作
intf=--d;// 先自減操作,再賦值操作

System.out.println(d);
System.out.println(e);
System.out.println(f);
}

冪運算

publicstaticvoidmain(String[]args) {
// 冪運算 2^3=2*2*2=8
doublem=Math.pow(2,3);
System.out.println(m);
}

邏輯運算子

publicstaticvoidmain(String[]args) {
// 與(&&) 或(||) 非(!)
booleana=true;
booleanb=false;

System.out.println("a&&b: "+(a&&b));//邏輯與運算:兩個變數都為真,結果才為真
System.out.println("a||b: "+(a||b));//邏輯或運算:兩個變數都為假,結果才為假
System.out.println("!(a&&b): "+!(a&&b));//邏輯非運算:如果為真,則為假;如果為假,則為真。

// 短路運算
// 邏輯與運算:如果第一個變數為假,則不必繼續運算,直接輸出結果為假。
// 邏輯或運算:如果第一個變數為真,則不必繼續運算,直接輸出結果為真。
}

位運算

A=00111100
B=00001101

A&B=00001100
A|B=00111101
A^B=00110001
~B=11110010

//面試題
計算2*8=16
轉化為2*2*2*2=16
運算規則:<<*2(左移乘2)
>>/2(右移除2)

000000000
000000011
000000102*
000000113
000001004*
000010008*
0001000016*

故運算結果為:2<<3=16(2向左移動3位得到16)

字串連線符

publicstaticvoidmain(String[]args) {
inta=10;
intb=20;

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

//面試題
//字串連線符(先到先得原理)
System.out.println(""+a+b);//字串連線符在前面則結果為字串相連
System.out.println(a+b+"");//字串連線符在後面則進行前面的運算
列印結果:1020
30
}