Java基础:运算符

算术运算符一元运算符++,--
二元运算符+,-,*,/,%
赋值运算符=
扩展运算符+=,-=,*=,/=
关系运算符>,<,>=,<=,==,!=,instanceof
逻辑运算符&&,||,!,^
位运算符&,|,^,~,>>,<<,>>>
条件运算符?    :
字符串连接符+

1、一元运算符

       算数运算符中++,--属于一元运算符, 该类运算符只需要一个操作数。

1、无论是++还是--,每次运算量为1。

2、运算符在前面++a;先运算,再赋值。

3、运算符在后面a++;先赋值,再运算。

//++  --  自增,自减  一元运算符
        int a = 3;

        int b = a++;//执行完这行代码后,先给b赋值,再自增
        //     a = a+1
        System.out.println(a);//4
        //      a = a+1
        int c = ++a;//执行这段代码前,先自增,再给c赋值

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

        //幂运算  2^3 2*2*2=8
        //很多运算我们会使用一些工具类来操作
        double pow = Math.pow(2, 3);
        //返回值快捷键 alt + Enter
        System.out.println(pow);//8.0

2、二元运算符
        算数运算符中+,-,*,/,%属于二元运算符, 二元运算符指的是需要两个操作数才能完成运算的运算符,其中%是取模运算符,就是我们常说的求余数操作。

二元运算符的运算规则

整数运算:

1、如果两个操作数有一个为long,则结果也为long.

2、没有long时,结果为int。即使操作数全为short,byte,结果也为int。

浮点运算:

1、如果两个操作数有一个为double,则结果为double。

2、只有两个操作数都是float,则结果为float。

取模运算:

1、其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同,如:10%3=1,-11%3=-2;11%-3=2

 //二元运算符
        //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(a/(double)b);//0.5
 long a = 12345678912L;
        int b = 122;
        short c = 10;
        byte d = 8;

        System.out.println(a+b+c+d);//long类型   12345679052
        System.out.println(b+c+d);//int类型   140
        System.out.println(c+d);//int类型   18

 

3、扩展运算符

扩展运算符
运算符用法举例等效的表达式
+=a+=ba=a+b
-=a-=ba=a-b
*=a*=ba=a*b
/=a/=ba=a/b
%=a%=ba=a%b
   int a = 10;
        int b = 20;

        a+=b;//a = a+b
        a-=b;//a = a-b

        System.out.println(a);

4、关系运算符

关系运算符用来比较运算,且运算的结果是布尔值:true/false

关系运算符
运算符含义示例
==等于a==b
!=不等于a!=b
>大于a>b
<小于a<b
>=大于或者等于a>=b
<=小于或者等于a<=b

注意事项:

1、=是赋值运算符,而真正的判断两个操作数是否相等的运算符是==。

2、==、!=是所有(基本和引用)数据类型都有可以使用。

3、>、>=、<、<=仅针对数值类型(byte、short、int、long、float、double。以及char)。

 //关系运算符返回的结果:  正确   错误  布尔值

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

        System.out.println(a>b);//false
        System.out.println(a<b);//true
        System.out.println(a==b);//false
        System.out.println(a!=b);//true
        System.out.println(c%a);//  c/a  21/10 =2..........1  取余

 

5、逻辑运算符
逻辑运算的操作数和运算结果都是 boolean值。

逻辑运算符
运算符    说明
逻辑与    &(与)    两个操作数位true,结果才是true,否则是false
逻辑或    |(或)    两个操作数有一个true,结果就是true
短路与    &&(与)    只要有一个为false,则直接返回false
短路或    ||(或)    只要有一个为true,则直接返回true
逻辑非    !(非)    取反:!false为true,!true为false
逻辑异或    ^(异或)    相同为false,不同为true
 

// 与(&&)and     或(||) or    非(!)取反
        boolean a = true;
        boolean b = false;

        System.out.println("a && b:"+(a&&b));//  a && b:false
        //逻辑与运算:两个变量都为真,结果才为true
        System.out.println("a || b:"+(a||b));//  a || b:true
        //逻辑或运算,两个变量有一个为真,则结果才为true
        System.out.println("!(a && b):"+!(a&&b));//  !(a && b):true
        //逻辑非运算:取反 真变为假   假变为真

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        //与运算中,若第一个条件已经判断为假,则后续条件不执行
        System.out.println(d);//false
        System.out.println(c);//5

6、位运算符

A =   0011 1100
B =   0000 1101
-----------------------------
A&B = 0000 1100  与
A|B = 0011 1101  或
A^B = 0011 0001  异或
~B  = 1111 0010  取反

2*8 = 16 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(2<<3);

 涉及Java面试题:int a=2*8怎样运算效率最快?

用移位运算 int a=2<<3;
2的二进制是10 在32位存储器里面是0000 0000 0000 0010
左移三位后变成 0000 0000 0001 0000 也就是16 

解释一下,在系统中运算是以二进制的形式进行的。相比来说俩个二进制数相乘运算比移位运算慢一些。位操作是程序设计中对位模式按位或二进制数的一元和二元操作。 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。在现代架构中,情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)

7、条件运算符

语法格式:x?y:z

其中x为boolean类型表达式,先计算x的值,若为true,则整个运算的结果为表达式y的值,否则,整个运算的结果为表达式z的值。

      //x ? y :z
        //如果x==true,则结果为y,否则结果为z

        int score = 60;
        String type = score < 60 ? "不及格": "及格";

        System.out.println(type);

8、字符串连接符

"+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。

空字符串" "为String类型

   String A = "3";
        int B = 4;
        int C = 5;
        System.out.print("A+B+C=");
        System.out.println(A+B+C);		//A+B+C="3"+4+5="34"+5="345"
        System.out.print("B+C+A="+(B+C+A));//B+C+A=4+5+"3"=9+"3"="93"

        System.out.println("\n");
        //字符串连接符  +  ,String
        System.out.println(""+B+C);//45
        System.out.println(B+C+"");//9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kong清空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值