Java运算符

自增自减

//++ -- 自增,自减  一元运算符
        int a = 3;
        int b = a++;//先给b赋值,再自增
        //a++ : a = a + 1
        System.out.println(a);//a=4

        int c = ++a;//先自增,再赋值


        System.out.println(a);//5
        System.out.println(b);//3
        System.out.println(c);//5

由于++的优先级比=要高,又都是右结合性,所以先执行++,针对b=a++这个语句来讲,先执行a++,创造一个临时变量;后执行=,将这个临时变量的值给b,最后a再进行自加


整型加减

long a = 123456789L;
int b = 123;
short c = 12;
byte d = 1;

System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int

运算中有long则结果为long类型,没有long则为int(整型加减)


幂运算

double pow = Math.pow(2, 3);

幂运算 , 很多运算要使用工具类来操作


短路运算

//短路运算:System.out.println(a&&b);中若变成System.out.println(b&&a);由于b是false,所以在判断时不计算a了
        //证明短路情况存在
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        //
        //
        System.out.println(d);//false
        System.out.println(c);//5
  • 如果存在短路现象,由于c=5,一定大于4,所以第一个括号内就为假,那么后续就不执行了,所以可以先输出d,后输出c查看结果
  • 如果d为false,c为5,则证明短路现象存在,因为c没有参与后续自加运算

位运算符

/*
          A = 0011 0000
          B = 0011 0110

A与B   A&B  = 0011 0000    AB上下每位数字比较,全为1则结果为1

A或B   A|B  = 0011 0110    AB每位比较,都是0则为0,只要有1个是1,则结果为1

A异或B A^B  = 0000 0110    相同为0,不同为1

对B取反 ~B  = 1100 1001     对B每位取反
 */
2*8 怎么运算最快? 2*2*2*2*2
    位计算效率极高,直接跟底层打交道
<<左移   *2
>>右移   /2
0000 0000   0
0000 0001   1
0000 0010   2
0000 0011   3
0000 0100   4

0000 1000   8

0001 0000   16
 */

计算机组成原理


字符串连接符

//字符串连接符 +
System.out.println(a+b);
System.out.println(""+a+b);//1020
//只要输出中有string类型,在输出时用+相连,则其余操作数也会转换成string类型并连接起来

System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
//如果字符串在前面,则拼接;反之则先计算再拼接

证明执行顺序是从左往右的


三元运算符

//x ? y : z
//x == true,则结果为y,否则结果为z
int score = 80;
String type = score<60?"不及格":"及格";
System.out.println(type);


运算符优先级表

posted @ 2025-02-20 22:56  Ryanrrx  阅读(10)  评论(0)    收藏  举报