03、运算符

算术运算符

      • / %(取余,模运算) +(连接符)
        ++(自增:就在原有数据基础上+1,在赋给原有数据) –

单独使用时:
++和–放在操作数前面和后面效果一样
a++ a-- ++a --a

参与操作时:
1、放在操作数的前面:先自增或自减,再参与操作
int a = 10;
int b = ++a; b=11 a=11
2、放在操作数的后面:先参与操作,再自增或自减
int a = 10;
int b = a++; b=10 a=11

赋值运算符

+= -= *= /= %=

比较运算符

< > ==
运算完的结果必须是 true 或者 false

逻辑运算符

用于连接,两个 boolean 类型的表达式
&:与
&:符号的运算特点:
true & true = true;
true & false = false;
false & true = false;
false & false = false;
&:运算规律:
&运算的两边只有有一个是 false,结果肯定是 false
只有两边都为 true,结果才是 true

|:或
运算特点
true | true = true;
true | false = true;
false | true = true;
false | false = false;
|:运算规律:
|运算的两边只要有一个是 true,结果肯定是 true
只有两边都为 false,结果是 false

^:异或 :和或有点不一样
运算特点
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
^异或的运算规律:
^符号的两边结果如果相同,结果是 false
两边的结果不同,结果是 true
!:非运算,判断事物的另一面


&&:
和&运算的结果是一样的。但是运算过程有点小区别
&:无论左边的运算结果是什么,右边都参与运算
&&:当左边为 false 时,右边不参与运算的

||:
和|运算的结果是一样的。但是运算过程有点小区别
|:无论左边的运算结果是什么,右边都参与运算
||:当左边为 true 时,右边不参与运算的

位运算符

一定是涉及到二进制数据
在计算机里,数据的运算是以补码的形式进行的:
1、正数的原反补码相同
2、负数的反码是最高位(符号位)数值不变,其他位(数值位)取反
3、负数的补码是反码末尾加一
4、负数的展现给用户的是原码的十进制的值

&(位与运算符)
有0则0(相当于逻辑运算符里的false)

     300000000  00000000  00000000  00000011
&    400000000  00000000  00000000  00000100
===================================================
	      00000000  00000000  00000000  00000000
结果十进制是:0

|(位或运算符)
有1则1(相当于逻辑运算符里的ture)

      300000000  00000000  00000000  00000011
|     400000000  00000000  00000000  00000100
===================================================
	       00000000  00000000  00000000  00000111
结果十进制是:7

^(位异或运算符)
异或的特殊情况:一个数据对另一个数据按位异或2次,该数据值不变,相同则0,不同则1

      300000000  00000000  00000000  00000011
^     400000000  00000000  00000000  00000100
===================================================
	       00000000  00000000  00000000  00000111
结果十进制是:7

运用:交换两个int型数据值

a = a ^ b;
/*此时赋值号右边的 a 是 a^b,所以b = a ^ b ^ b 用一个数据对另一个数据按位异或2次,该数据值不变 所以 b = a;
*/
b = a ^ b; 
/*因为 a 的值没变,所以 a 还是 a^b,但是 b 已经是 a 了,所以a = a ^ b ^ a*/
a = a ^ b;
System.out.println("a: " + a + " b : "+ b);

~(位取反) 0变1,1变0
0变1,1变0

~  300000000  00000000  00000000  00000011
===================================================
		11111111  11111111  11111111  11111100(负数:补码形式)
		11111111  11111111  11111111  11111011 (反码)
		10000000  00000000  00000000  00000100 (原码)
结果十进制: -4

<<: 位向左移动,右边补0
以下输出整数3向左移动了2位,结果值为十进制12
把左边的数据2的移动次密: 32^2 = 3*4 = 12
左移动数据会变大

3的二进制:
00000000  00000000  00000000  00000011
向左移动2位:
00000000  00000000  00000000  00001100
十进制为: 12

>>: 位向右移动,最高位是0时(正数),左边补0,最高位是1(负数),左边补1
把左边的数据(正数)/2的移动次幂 24/2^2 = 6

24的二进制: 11000
原码:
00000000  00000000  00000000  00011000
反码:
11111111  11111111  11111111  11100111
补码:
11111111  11111111  11111111  11101000

对补码向右移动2位:
11111111 11111111  11111111  11111010	 
还需要再求出以后2位后的原码:
补码: 11111111 11111111  11111111  11111010
反码: 11111111 11111111  11111111  11111001
原码: 10000000 00000000  00000000  00000110
此时展现给大家的十进制数是: -6

>>>:无符号位右移动不管最高位是0还是1,统统左边补0
-24的二进制: 11000

原码:
10000000  00000000  00000000  00011000
反码:
11111111  11111111  11111111  11100111
补码:
11111111  11111111  11111111  11101000

无符号位右移2位:
11111111  11111111  11111111  11101000
00111111  11111111  11111111  11111010	

补码:00111111  11111111  11111111  11111010
反码:00111111  11111111  11111111  11111010
原码:00111111  11111111  11111111  11111010
结果:十进制 1073741818

三目运算符

int max = a>b?a:b;
//获取三个整数中的较大的整数

键盘录入

实际开发中,数据是变化的,这样带来的好处是程序具有灵活性,可动性

导入包:import java.util.Scanner;
位置:放在class关键字的上方
创建对象:Scanner sc = new Scanner(System.in);
获取数据:int x = sc.nextInt();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值