JAVA运算符

Java运算符大体与C语言一致,部分有语言特点

算数运算符

基本四则运算(+、-、*、/)

int a = 20;
int b = 10;
System.out.println(a + b); // 30
System.out.println(a - b); // 10
System.out.println(a * b); // 200
System.out.println(a / b); // 2
System.out.println(a % b); // 0 --->模运算相当于数学中除法的余数

注意:

  • 都是二元运算符,使用时必须要有左右两个操作数
  • int / int 结果还是int类型,而且会向下取整(同C语言)
  • 除法,取模右操作数不能取0
  • 取模可以对浮点数取(意义不大)
System.out.println(11.5 % 2.0);
// 运行结果
1.5
  • 操作数类型不同,会类型提升

增量运算符(+=、-+、*=、/=)

可以发生整型提升

short a=1;
a=a+1;        //报错,1为int型,类型提升为int
//修改
a=(short)(a+1);
a+=1;         //正确

注意:只有变量才能使用该运算符,常量不能使用。

自增/自减运算符(++、--)

同C语言(详细可看C初阶)

关系运算符

关系运算符主要有六个: == != < > = ,其计算结果是 true 或者 false 。

int a = 10;
int b = 20;
// 注意:在Java中 = 表示赋值,要与数学中的含义区分
// 在Java中 == 表示相等
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a < b); // true
System.out.println(a > b); // false
System.out.println(a <= b); // true
System.out.println(a >= b); // false

注意:当需要多次判断时,不能连着写,比如:3 < a < 5,Java程序与数学中是有区别的

逻辑运算符

逻辑运算符主要有三个: && || ! ,运算结果都是 boolean类型。

逻辑概念,短路求值同C语言,左右表达式必须为boolean

位运算符

位运算符主要有四个: & | ~ ^ ,除 ~ 是一元运算符外,其余都是二元运算符

注意: 当 & 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表示 逻辑运算

移位运算符

移位运算符有三个: > >>> ,都是二元运算符,且都是按照二进制比特位来运算的。

1. 左移 : 最左侧位不要了, 最右侧补 0.

int a = 0x10;
System.out.printf("%x\n", a << 1);
// 运行结果(注意, 是按十六进制打印的)
20

注意:向左移位时,丢弃的是符号位,因此正数左移可能会编程负数。

2. 右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)

int a = 0x10;
System.out.printf("%x\n", a >> 1);
// 运行结果(注意, 是按十六进制打印的)
8 i
nt b = 0xffff0000;
System.out.printf("%x\n", b >> 1);
// 运行结果(注意, 是按十六进制打印的)
ffff8000

3. 无符号右移 >>>: 最右侧位不要了, 最左侧补 0

int a = 0xffffffff;
System.out.printf("%x\n", a >>> 1);
// 运行结果(注意, 是按十六进制打印的)
7ffffff

注意:

        1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.

        2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.

        3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.

        4. 移动负数位或者移位位数过大都没有意义

条件运算符

同C语言

表达式1 ? 表达式2 : 表达式3;

注意:

        1. 表达式2和表达式3的结果要是同类型的,除非能发生类型隐式类型转换。

int a = 10;
int b = 20;
int c = a > b? 1 : 2.0;

        2. 表达式不能单独存在,其产生的结果必须要被使用

int a = 10;
int b = 20;
a > b? a : b; // 报错:Error:(15, 14) java: 不是语句

注意:运算符之间是有优先级的. 具体的规则我们不必记忆. 在可能存在歧义的代码中加上括号即可

最难不过坚持!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值