java的6类运算符_6、Java运算符

运算符的分类

93f89c986d3e6fc6fd16c94f1341bcd3.png

算数运算符

二元运算符

算术运算符中 = - * / % 属于二元运算符,二元运算符指的是需要两个操作数才能完成的运算的运算术。

整数运算规则

1、如果两个操作数有一个为Long,则结果也为Long。

2、如果没有Long,结果则为int,即使操作数为short、byte,结果也为int。

int a =1;

long b = 2;

//int c = a + b; //报错 因为有一个为Long,则结果也为Long

byte a1 = 1;

short a2 = 1;

int d = a1 + a2; //正确 因为如果没有Long,结果则为int

浮点运算规则

1、如果两个操作数有一个为double,则结果为double。

2、只有两个操作数都为float,结果才为float。

double a = 1.1;

//float b = a + 2.2f; //报错,因为操作数有一个为double,则结果为double

取模运算:其操作数可以为浮点数,一般使用整数,结果是余数,余数符号和左边操作数相同。

一元运算符

一元运算符是该类运算只需要一个操作数的时候,比如:++,--

int a = 2;

int b = a++; //先是执行,b = 3,然后运算完以后再给a自增。

System.out.println("a=" + a + "\tb=" + b);

//运行结果:a=3b=2

a = 2;

b = ++a; //先是执行a的自增,然后再赋值给b

System.out.println("a=" + a + "\tb=" + b);

//运行结果:a=3b=3

赋值运算符

03336af38d590fd91c9dfb3b548d10a7.png

int a = 2;

int b = 3;

a+=b; //这个相当于a = a + b;

System.out.println("a=" + a);

//结果为:a = 5

a = 2;

a *= b + 3; //这个相当于 a = a * (b + 3)

//是先运算后面的,再运算前面的

System.out.println("a=" + a);

//结果为:a = 12;

关系运算符

关系运算符号是用来比较的,所以返回值只会是boolean,只有true/false

4847f28d3ab395cc9a6c20478655f14e.png

int a = 2;

int b = 3;

boolean c = b > a;

System.out.println("c="+c);

//结果为:c=true

注意事项:

== 和 != 是所有类型,引用和基本数据类型都可以用的。

.>、=、<=只是针对于数值类型,还有char可以使用。

逻辑运算符

c877f3b582a684cc1bcb3e98627542f0.png

Java中逻辑运算符的操作数和结果都是boolean类型的。

boolean a = true;

boolean b = false;

//逻辑与 &

//只有同时为true的时候才返回true,只要有一个为false,返回false

boolean c = a & b;

System.out.println("c=" + c);

//结果为:c=false;

//逻辑或 |

//只要有一个值为true,结果就为true

c = a | b;

System.out.println("c=" + c);

//结果为:c=true

//逻辑非

//取a的相返的值,如果a为true,c则为false,如果a为false,c则为true

c = !a;

System.out.println("c=" + c);

//结果为:c=false;

//逻辑异或

//两个值相同的时候为false,不同的时候为true

c = a ^ b;

System.out.println("c=" + c);

//结果为:true

//短路或

//因为逻辑或只要有一个值为true,结果就为true,但是还是为验证第二个值

//短路或不一样,只要第一个值为true,第二个值就不验证了,直接返回true,这样做是为了提高效率。

c = a || b;

System.out.println("c=" + c);

//结果为:c=true

//短路与

//因为逻辑与必须两个都为true,结果才为true,只要有一个为false结果就为false

//短路与不一样,只要第一个值为false,结果就为false,第二个值就不验证了,这样做是为了提高效率。

c = b && a;

System.out.println("c=" + c);

//结果为:false

位运算符

141c4f9da36b215897c993374138881b.png

位运算符是进行二进制运算的。

int a = 3;

int b = 4;

//取返操作

System.out.println("~a=" + ~a);

//结果为:~a=-4

//按位与

System.out.println("a&b=" + (a&b));

//3的后四位二进制为 0011

//4的后四位二进制为 0100

//与 运算符是相同的为 1 不同的为 0 所以最后的结果为 0000

//结果为:a&b = 0

//按位或

System.out.println("a|b=" + (a|b));

//3的后四位二进制为 0011

//4的后四位二进制为 0100

//或 运算符是只要有一个为1,就为1 所以结果为 0111

//结果为:a|b = 7

//按位异或

System.out.println("a^b=" + (a^b));

//3的后四位二进制为 0011

//4的后四位二进制为 0100

//异或 运算符是不同的为1,相同的为0 所以最后结果为 0111

//结果为:a^b = 7

//左移运算符 <<

//这个运算符的右边是要移运的位数,左边才是要运算的值

System.out.println("a<<1=" + (a << 1));

//向左边移动一位数是把a乘以2 , 所以结果是 3 * 2

//结果为:6

//右移运算符 <<

//这个运算符的右边是要移运的位数,左边才是要运算的值

System.out.println("a>>1=" + (a >> 1));

//向右边移动一位数是把a除以2 , 所以结果是 3 / 2

//结果为应该为1.5的,但是因为是整数运算,算动取整,所以才为1

//结果为:a>>1=1

System.out.println("b>>1=" + (b >> 1));

//结果为:b>>1=2

& 、| 、^ 运算符:如果运算符,如果运算两边是boolean类型的值,那么这三个运算符就是逻辑运算符,如果是数值类型的,就是位运算符号。

字符串连接符

在我们前面的例子中,我们使用了 + 号,但是有的地方的 + 号不参与运算,是因为,这个时候, + 号变成了一个连接符号了,它变成连接符号的条件是 左右两边只要有一个String 类型的字符串,就会变成连接符号。

int a = 2;

//这里的3为字符串,由双引号引起来的都是字符串

System.out.println(a + "3");

//结果为:23

条件运算符

条件运算符号也叫三目条件运算符号。格式为:

x ? y : z

这个运算表达式,有三个参数,x只能为boolean,另外两个参数可以为任意类型。

boolean a = true;

boolean b = false;

System.out.println("第一个参数为true="+(a?"输出为true":"输出为false"));

System.out.println("第一个参数为false="+(b?"输出为true":"输出为false"));

//结果为:

//第一个参数为true=输出为true

//第一个参数为false=输出为false

这个三目运算符可以做一些小的判断,但是如果是情况复杂的最好还是用if else来进行计算。

运算符优先问题

5c7ee53458c2953b07b1c1e121c60bfc.png

运算符的优先级不用特地的记,只要看看就可以了,因为工作的时候,复杂的运算符号,都会有小括号来进行组织的。不会全都按照运算符号优先级来进行设计。

细节决定成败!

个人愚见,如有不对,恳请扶正!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值