运算符

运算符

  • 算术运算符:+,-,*,/,%,++,--

  • 赋值运算符:=

  • 关系运算符:>,<,>=,<=,!=,instanceof

  • 逻辑运算符:&&,||,!

  • 位运算符:&,|,^,~,>>,<<,>>>

  • 条件运算符:?:

  • 扩展赋值运算符:+=,-=,*=,/=

注意

进行基本运算时的返回类型

  • 涉及变量类型为byte或short时,返回类型为int

  • 涉及变量类型只含int和byte或short时,返回类型为int

  • 涉及变量类型只含long和int、byte或short时,返回类型为long

  • 涉及变量类型只含float和long、int、short或byte时,返回类型为float

  • 涉及变量类型只含double和float、long、int、short或byte时,返回类型为double

  • 返回优先级:double > float > long > int

     

a++与++a的区别

  • b = a++ 等价于 b = a; a = a+1

  • b = ++a 等价于 a = a+1; b = a

    int a = 3;
    int b = a++;
    system.out.println(a);//4
    system.out.println(b);//3
    int c = 3;
    int d = ++c;
    system.out.printl(c);//4
    system.out.printl(d);//4

     

逻辑运算

&&: 同真为真 (运算逻辑为是否有假,一旦有假则返回 false)

||: 有真为真运算逻辑为是否有真,一旦有真则返回 true

!:取反

int c = 1;
int b = 1;
system.out.println((c == 2)&&(++c == 2));//false
system.out.println((b == 1)||(++b == 1));//true
system.out.println(c);//输出1,说明++c == 2未执行
system.out.println(b);//输出1,说明++b == 1未执行

 

位运算

二进制运算

A 0000 1011

B 1011 0110

符号运算格式结果
| 按位或 A | B 1011 1111
^ 按位异或 A ^ B 1011 1101
~ 按位取反 ~B 0100 1001
& 按位与 A & B 1011 1111
<< 按位左移 A << 1 0001 0110
>> 按位右移 B >> 3 0001 0110

 


  • 位运算是一种极高效的底层运算

    计算 2 * 8 = ?的问题,用位运算是效率最高的方法

    system.out.println(2<<3)
    //0000 0010左移三位得0001 0000,即16
    //左移n位,即*(2^n);右移n位,即/(2^n)

     

字符串连接符: +

  • 当'+'左右涉及的操作数含String类型,则会自动把另一操作数也转化为String类型并进行连接

int a = 10;
int b = 20;
String c = "20";
system.out.println(""+a+b);//""为空字符串
//输出1020
//""+a 转化为String类型10
//String类型10+b,继续将b转化为String20,连接得1020

system.out.println(a+b+"");
//输出30
//从左往右,a+b未涉及String,基本运算得30,再进行后续连接

system.out.println(a+(b+""));
//输出1020

system.out.println(a+c);
//输出1020

三元操作符 ?:

A ? B : C

(如果 A == true ,则 B,否则 C)

int score = 42;
String print = score >= 45? "及格":"不及格";
system.out.println(print);
//输出不及格

 

posted @ 2022-02-28 21:15  Dic250  阅读(67)  评论(0编辑  收藏  举报