【JAVA基础——运算符】

二, 运算符

运算符用于对定义的变量做运算的。

特点

  1. 默认做过运算的数据的类型不会低于int型

 byte b1 = 1, b2 = 2;
 byte b3 = (byte)(b1 + b2);

2. 默认做过运算的数据的类型取出现的最高类型

 int a = 10;
 double b = 2.5;
 //int d = a * b;
 System.out.println(a * b);

注意: 结果范围 : int ~ double

1, 算术运算符

符号含义特殊注意
+加法;拼接
-减法
*乘法
/除法/ 两侧如果都是整数,只能得到整数(向下); /两侧有一侧是小数才能得到小数
%余数a%b为0,a是b的倍数; a % 2 为0 a是偶数
++自加1一个变量的自加: a++ ; ++a ; a的上面加1
--自减1一个变量的自减: a-- ; --a ; a的上面减1
         System.out.println(10 + "20");
         System.out.println(10 + '2');
         System.out.println(10 + 20);
         
         System.out.println(10.5 - 2);
         
         System.out.println(10 * 2.5);
         
         System.out.println(5 / 2);
         System.out.println(5.0 / 2);
         
         System.out.println(10 % 3);
         System.out.println(8 % 2);
         System.out.println(6 % 7);
         
         int a = 12;
         System.out.println(a % 6);

小结:

  1. ++ -- 当自加自减运算时没有其他运算或者操作,无区别

  2. 当其他操作:

    ++ 后置: 先执行其他操作,后自加1

    ++ 前置: 先自加1,再执行其他操作

2,比较运算符(关系运算符)

又叫做关系运算符:

符号含义特殊情况
==判断两个值是否相等
!=不等于
>
>=
<=
<

小结:

  1. 比较运算符结果是:布尔类型 true false

  2. 经常可以用于判断的条件

  3. 比较的变量的值(和内存空间的大小无关)

         int a = 4, b = 3;
         //System.out.println(a == b);
         //System.out.println(a != b);
         //System.out.println(a >= b);
         
         //System.out.println(a++ == b);
         System.out.println(a == ++b);

值的比较:

         int a = 10;
         char c = 10;
         float f = 10.0f;
         double d = 10.0;
         
         System.out.println(a == c);
         System.out.println(c == f);
         System.out.println(c == d);
         System.out.println(f == d);

3, 逻辑运算符

符号含义特殊情况
&&短路与当第一个操作数为假,第二个操作数不执行(被短路)
&逻辑与两侧都执行
||短路或当第一个操作数为真,第二个操作数不执行(被短路)
|逻辑或两侧都执行

小结:

与: 两端操作数,同真则真,一假则假

或: 两端操作数,一真则真,同假则假

非: 真变假,假变真

逻辑运算符的操作数必须布尔类型

与: && 短路

& 不短路,& 操作的是数字,不做逻辑运算,位运算

或: || 短路

| 不短路,| 操作的是数字,不做逻辑运算,位运算

 int a = 1, b = 1, c = 1;
 //boolean boo1 = a ++ == 1 && b ++ == 1 || c++ == 1;
 //System.out.println(boo1);// true
 //System.out.println(a + "," + b + "," + c);// 2 2 1
                 
 boolean boo1 = ++a == 2 || b ++ == 1 && ++c == 2;
 System.out.println(boo1);// true
 System.out.println(a + "," + b + "," + c);// 2 1 1

位运算(二进制运算)

二进制运算:eg.先变成二进制 0000 0010,在得出结果 2

五个位运算符: & | ^ << >>

&优先0
|优先1
^同0异1
<<左移n位 = * 2的n次幂
>>右移n位 = / 2的n次幂

& 按位与( 优先 0 ) : 同为1,则是1,有0则是0.

 System.out.prinln(2&3); // 2
 //0000 0010
 //0000 0011 相同则同,遇0则0 
 //0000 0010 --->结果: 2

| 按位或 ( 优先 1):有1为1,同0则0

 System.out.prinln( 2 | 3);
 //0000 0010
 //0000 0011
 //0000 0011

^ 按位异或 : 相同为0,不同为1

 System.out.prinln( 2 ^ 3);
 //0000 0010
 //0000 0011
 //0000 0001

<< 左移 左移n位 = *2的n次幂

 2变成8最快的方式:
     System.out.prinln(2 << 2);
 // 电脑运行二进制最快,2的二进制是: 0000 0010
 // 2左移2位就是 0000 1000,也就是8的二进制
     System.out.prinln(3 << 2);// 3*4 = 12

右移 >> 右移n位 = /2的n次幂

     System.out.prinln(16 >> 2);//16 / 4 = 4
     

4, 条件运算符

三目运算符(三元运算符,需要三个操作数)

++ - - !是单目运算符,只有一个操作数即可

& | 都是双目运算符

语法

条件操作数1 ?操作数2 : 操作数3

运算过程

先进行 操作数1的boolean运算,

如果真的,则执行操作数2,

假的,则执行操作数3

 int a = 10 ;
 double b = 8.0 ;
 System.out.prinln( a > b ? a : b );
 //运算结果类型 取运算中数据的最高类型 
 //运算中出现double,所以运算结果也自动变成double,显示 10.0 。

5, 赋值运算符

将右侧的值赋给左侧。

符号含义特殊情况
=赋值
+=加上再赋值,a+= 10; a = a + 10;+= 完成类型内部转化
-=
*=
/=
%=
         byte a = 10 , b = 20;
         a = 20;
         // a = a + 10;  错误写法
         a += 10;
         System.out.println(a);

小结:

  1. = 赋值,取最后一次赋值的结果

  2. += -= *= /= %= 可以内部转化类型

  3. 除了++ -- 后置,赋值运算符的优先级最低

6, 运算符总结

优先级:

括单算关逻条赋

  1. 括号, 单目 : ! ++ -- 前置 -

  2. 算术运算符

  3. 关系运算符

  4. 逻辑运算符 && > ||

  5. 条件运算符

  6. 赋值运算符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值