初识java:运算符

本文详细介绍了Java中的各种运算符,包括算术运算符(如加减乘除及增量运算符)、关系运算符(如等于和不等于)、逻辑运算符(&&、||、!),位运算符(&、|、^、~)以及移位运算符。还特别提到了运算符的优先级和使用注意事项,如自增/自减操作符的用法以及条件运算符的表达式1?表达式2:表达式3。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Java中运算符可分为以下:算术运算符(+ - /)、关系运算符(< > ==)、逻辑运算符、位运算符、移位运算符以及条件运算符等

一.算术运算符

1.基本四则运算符 (+,-,*,/,%)

int a=10;
int b=5;
System.out.println(a+b); //15 加法
System.out.println(a-b); //5 减法
System.out.println(a*b); //50 乘法
System.out.println(a/b); //2 除法
System.out.println(a%b); //0 除法取余数

注意:

  1. 都是二元运算符,左右两边都要有操作数
  2. 整形变量 / 整形变量 结果还是整形变量,而且会向下取整

例如

int c=3;
int d=2;
System.out.println(c/d); //1 (1.5向下取整)

  1. 除法和取模时,右边操作数不能为0

例如

System.out.println(10/0);
System.out.println(10%0);
运行结果
Exception in thread “main” java.lang.ArithmeticException: / by zero
at test.main(test.java:16)

  1. 取模可以对double类型进行操作

例如

System.out.println(11.5%2.0); //1.5

5.两次操作数类型不一致时,存在浮点数就会变成浮点型
例如

long a=1;
double b=0.2;
int i=1;
float c=0.5f;
System.out.println(a+b); //1.2
System.out.println(i+b); //1.2
System.out.println(i-c); //0.5

2.增量运算符 (+=,-=,*=,/=,%=)

该种类型运算符操作完成后,会将操纵的结果赋值给左操作数

int a=2;
a+=1; //相当于 a=a+1;
System.out.println(a); //3
a-=1; //a=a-1;
System.out.println(a); //2
a*=2; //a=a*2;
System.out.println(a); //4
a/=2; //a=a/2;
System.out.println(a); //2
a%=2; //a=a%2
System.out.println(a); //0

注意

  1. 只有变量才能使用该操作符,常量不行

3.自增/自减操作符 (++/–)

++表示变量的值加1,–表示变量的值减1

int a=1;
a++;
System.out.println(a); //2
System.out.println(a++); //2 ++放后面,表示先使用a的值再+1
System.out.println(++a); //4 ++放前面,表示先+1再使用a的值
System.out.println(a); //4
a–; //同理
System.out.println(a); //3
System.out.println(a–); //3
System.out.println(–a); //1

注意

  1. ++放后面,表示先使用a的值再+1;
  2. ++放前面,表示先+1再使用a的值 (–同理)
  3. 只有变量能使用,常量不行

二.关系运算符 (== != < > <= >=)

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

int a=1;
int b=2;
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

注意

  1. 需要多次判断时,不能连着写,如3<a<5

三.逻辑运算符 (&& || !)

1.&&

int a=1;
int b=2;
System.out.println(a== 1&&b== 2); //true
System.out.println(a== 1&&b== 3); //false
System.out.println(a== 2&&b== 2); //false

语法规则:表达式1&&表达式2,左右表达式必须是boonlean类型的结果
表达式1和表达式2全为真才为真,有一个假就为假
当表达式1为假时,就不会计算表达式2
例如 虽然下面表达式2是会报错,但因为表达式1已经为假,就不计算表达式2,因此没有报错

int a=1;
int b=2;
System.out.println(a== 2&&a/0== 0); //false

2.||

int a=1;
int b=2;
System.out.println(a== 1||b== 2); //true
System.out.println(a== 1||b== 3); //true
System.out.println(a== 2||b== 2); //true
System.out.println(a== 2||b== 3); //false
System.out.println(a== 1||a/0== 0); //true
System.out.println(a== 2||a/0== 0); //报错

语法规则:表达式1 || 表达式2,左右表达式必须是boonlean类型的结果
表达式1或2只要有一个为真就为真,全假才为假
同理当表达式1为真,就不会计算表达式2

3.!

int a=1;
System.out.println(!(a==1)); //false
System.out.println(!(a!=1)); //true

语法规则:! 表达式
假变真,真变假

四.位运算符 (& | ^ ~)

java中数据存储最小单位是字节,数据操作最小单位是比特,一个字节由八个二进制比特位组成
位运算符主要有四个:& | ^ ~除了~是一元运算符,其余都是二元运算符

1.按位与 &

如果两个二进制位都是1,则为1,否则就为0

int a=6;
int b=10;
System.out.println(a&b); //2
//为了简介只取后面八个二进制位展示计算 计算时要先转化为二进制位
a:0000 0110 //6
b:0000 1010 //10
c:0000 0010 // 结果 2

2.按位或 |

如果两个二进制位中只要有一个为1,则为1否则为0

int a=6;
int b=10;
System.out.println(a|b); //14
//为了简介只取后面八个二进制位展示计算 计算时要先转化为二进制位
a:0000 0110 //6
b:0000 1010 //10
c:0000 1110 // 结果 14

3.按位异或 ^

两个二进制位中只有一个为1就为1,否则为0

int a=6;
int b=10;
System.out.println(a^b); //12
//为了简介只取后面八个二进制位展示计算 计算时要先转化为二进制位
a:0000 0110 //6
b:0000 1010 //10
c:0000 1100 // 结果 12

4.按位取反 ~

如果该位为0就变为1,如果为1就变为0

int a=6;
int b=~a;
System.out.println(b); //-7
//为了简介只取后面八个二进制位展示计算
a:0000 0110 //6
b:1111 1001 //-7 符号位也发生了变化 此时是负数的补码,变成原码只要除符号位外取反加1即可
c:0000 0111 //原码

五.位移运算符 (<< >> >>>)

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

1.左移运算符 <<

最右侧位补0,最左侧位不要

int a=2;
a<<=1; //1是向左移动一位
System.out.println(a); //4
//我们来简单的演示一下,前面的0就省略
// a:0010 左移前
// a:0100 左移一位后

注意:左移时由于符号位会丢失,因此左移可以改变符号

2.右移运算符 >>

正数最左侧位补0,负数补1,最右侧位不要

int a=2;
a>>=1; //1是向右移动一位
System.out.println(a); //1
//我们来简单的演示一下,前面的0就省略
// a:0010 右移前
// a:0001 右移一位后

3.无符号右移 >>>

最右侧位不要,最左侧位补0 (负数会变成正数)

int a=-4;
int b=a>>>1;
int c=4;
c>>>=1;
System.out.println(b); //2147483646
System.out.println©; //2

注意

  1. 左移n位相当*2的n次方
  2. 右移n位相当于/2的n次方
  3. 计算机移位的效率比高于直接计算

六.条件运算符

条件运算符只有一个:
表达式1 ? 表达式2 : 表达式3
当表达式1为真,则整个表达式的值为表达式2的值
当表达式1为假,则整个表达式的值为表达式3的值

int a=1;
int b=a==1?2:3;
System.out.println(b);// 2

//求两个整数的最大值
int a=10;
int b=20;
int c=a>b?a:b;

注意:

  1. 表达式2和3的值要是同类型的,除法能发生类型隐式转换

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

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

int a=10;
int b=20;
a>b?a:b; //报错

这里分享一道有意思的题目:
大家来想一下a等于什么?

boolean a=true == true?false?true:false:true;

这里我们来分析一下
表达式1: true==true;
表达式2:false?true:false;
表达式3:true:true;

这样是不是就清晰了很多,答案很显然是true

七.运算符的优先级

虽然运算符有优先级,但是可以不用记忆,只要在可能存在歧义的代码中加上括号就好

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值