%02 java_02-java

本文详细介绍了Java中的各种运算符,包括算术运算符如+、-、*、/、%,赋值运算符如=、+=等,逻辑运算符如&&、||、!,以及位运算符如&、|、^、~、移位运算。通过实例展示了各运算符的使用方法和效果,特别提到了位运算在数据交换和位移中的应用。此外,还讨论了三目运算符的使用情况。
摘要由CSDN通过智能技术生成

java运算符

运算符:

就是对常量和变量进行操作的符号

分类:

算术运算符,赋值运算符,逻辑运算符,位运算符,三目运算符

算术运算符:

+ - * / % ++ --

% 取余运算符

a++ 用了之后在自增

++a 自增之后在使用

+:

1:加法

2:正号

3:字符串连接符

赋值运算符:

基本的赋值运算符:=

拓展的赋值运算符:+=  -=  *=  /=  %=

拓展的赋值运算符其实隐含了一个强制类型转换

比较运算符:

==     !=    >     >=     

特点:

无论操作简单还是复杂,结果是Boolean

逻辑运算符:连接布尔型表达式

&与  |或  ^异或  !非  &&  ||

^:相同为false 不同为true

false ^ false = false

false ^ true = true

trur ^ true = false

&& 和 & 的区别:

1:最终结果一样

2:&&具有短路效果,左边是false,右边不执行

开发中常用:

&&   ||   !

位运算符:

&   |   ^   ~

<>   >>>

注意:要做位运算,首先要把数据转换为二进制

^的特点:

一个数据对另一个数据位异或两次,该数本身不变

a ^ b ^ b = a

a ^ b ^ a = b

用位异或交换两个整数:

左边:a b a

右边: a ^ b

a = a ^ b;

b = a ^ b; //a ^ b ^ b = a

a = a ^ b; // a ^ b ^ a =b

开发中:

c = a;

a = b;

b = c;

用变量相加:

a = a + b;

b = a - b;

a = a - b;

一句话搞定:

b = (a + b) - (a = b);

int a = 3;

int b = 4;

3的二进制:11

32位操作系统:00000000 00000000 00000000 00000011

4的二进制:100

32位操作系统:00000000 00000000 00000000 00000100

&位与运算:有0则0

3 & 4

00000000 00000000 00000000 00000011

&00000000 00000000 00000000 00000100

00000000 00000000 00000000 00000000

结果是:0

|位或运算:有1则1

3 | 4

00000000 00000000 00000000 00000011

|00000000 00000000 00000000 00000100

00000000 00000000 00000000 00000111

结果是:7

^位异或运算:相同则0,不同则1

3 ^ 4

00000000 00000000 00000000 00000011

^00000000 00000000 00000000 00000100

00000000 00000000 00000000 00000111

结果是:7

~按位取反运算:0变1, 1变0

~3

00000000 00000000 00000000 00000011

~11111111 11111111 11111111 11111100(补码)

补码:11111111 11111111 11111111 11111100

反码:11111111 11111111 11111111 11111011

原码:10000000 00000000 00000000 00000100

结果是:-4

<

<< 把<

System.out.println(3 << 2);//3 * 2^2

3二进制:00000000 00000000 00000000 00000011

(00)000000 00000000 00000000 0000001100

>>  右移: 最高位是0,左边补齐0;最高位是1,左边补齐1。

把>>左边的数据/2的移动次幂

System.out.println(24 >> 2);//24 / 2^2 = 6

>>>  无符号位移:无论最高位是0还是1,左边补齐0。

System.out.println(24 >>> 2);// 6

System.out.println(-24 >> 2);// -6

24的二进制:11000

原码:10000000 00000000 00000000 00011000

反码:11111111 11111111 11111111 11100111

补码:11111111 11111111 11111111 11101000

右移两位左边补1:

1111111111 11111111 11111111 111010(00)  补码

补码:1111111111 11111111 11111111 111010

反码:1111111111 11111111 11111111 111001

原码:1000000000 00000000 00000000 000110

结果:-6

System.out.println(-24 >>> 2);//

24的二进制:11000

原码:10000000 00000000 00000000 00011000

反码:11111111 11111111 11111111 11100111

补码:11111111 11111111 11111111 11101000

无论最高位是0还是1,左边补齐0:

0011111111 11111111 11111111 111010(00)

结果:73741818

最有效率的方式计算2 * 8的结果?

2 << 3

三目运算符:

格式:比较表达式?表达式1:表达式2

true             return

false          return

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值