十五天搞定Java(3)运算符

运算符

运算符有那些?

  • 算数运算符:+ ,-,*,/,%,++,--

++自加,--自减;

int a = 2;
System.out.println(a);//2
int b = a++;
System.out.println(b);//2,先赋值再自加
int c = ++a
System.out.println(c);;//4,先自加再赋值
System.out.println(a);//4
System.out.println(++a);//5
System.out.println(a);//5
  • 赋值运算符 =

  • 关系运算符:>, <, ==, !=, >=, <=

返回结果:布尔值:true,false;

  • 逻辑运算符:&&与,||或,!非,这里会涉及到一个短路操作,就比如false&&true,这个看到第一个false他就不会再去看后面的true了,因为结果已经确定了。

System.out.println(true&&false);//false
System.out.println(true||false);//true
  • 位运算符:&按位与,|按位或,~按位非,^按位异或,>>右移,<<左移

int a = 0b1010;//因为计算机只能识别二进制,所以位运算符是基于二进制的
int b = 0b0111;
System.out.println(a&b);//0b0010;即十进制的2
System.out.println(a|b);//0b1111;即十进制的15
System.out.println(~a);//0b0101;即十进制的-11
System.out.println(a^b);//0b1101;即十进制的13
​
//位移动运算符:
System.out.println(a>>2);//0b0010;即十进制的2
System.out.println(b<<1);//0b1110;即十进制的14
  • 条件运算符:if, ?

  • 扩展运算符:+=,-=,*=,/=,%=

  • 三元运算符:语法格式:x条件?y:z;

int a = 2;
System.out.println(a<5?6:8);//6

不同类型数值计算出来的结果是什么类型呢?非常重要!!!非常重要!!!

  1. 有double输出double;无double时,有long

  • 有浮点型数值时:有double输出double,无double输出float;

  • 无浮点型数值时:有long输出long,无long都会输出int。

注意:两个int运算出来得到的还是int,但是你有没有想过,比如int a = 1000000000 (十亿),int b = 1000000000 (十亿),那a×b出来的结果太大了,int范围只能到-2^31 ~ 2^31-1,一共 2^32 个值,a×b出来的结果肯定超范围了,这个时候出来的结果就不对了,内存溢出了。两个float也会有这样的情况。详情如下。

byte a = 2;
short b = 4;
int c = 6;
long d = 8L;
​
float e = 10F;//10.0
double f = 20;//20.0
​
System.out.println(a*b);//8,int类型
System.out.println(a/b);//0,int类型
System.out.println(a+b);//6,int类型
System.out.println(a-b);//-2,int类型
​
System.out.println(a+d);//10,long类型
System.out.println(a*d);//16,long类型
​
System.out.println(a+e);//12.0,float类型
System.out.println(a+f);//-2,float类型
​
int aa = 10_0000_0000;
int bb = 2000;
int cc = aa*bb;
System.out.println(cc);//他会得到一个这个-1454759936,结果显然不对,说明结果内存溢出了,这就是两个int运算可能出现的问题
//那如果定义他俩相乘的结果为long呢?我们来看一下
long dd = aa*bb;
System.out.println(dd);//会发现还是-1454759936,为啥呢?不是已经定义为long了吗?那是因为两个int先进行了计算,得到一个int类型的-1454759936,然后再类型转换成了long。注意区别,也就是上面的-1454759936和下面的-1454759936类型不一样,上面是int,下面是long。

2.字符串连接符:+,有String类型的计算规则是什么呢?会输出什么呢?

一旦出现字符串,以后的运算,都将作为字符串去连接,而字符串出现之前的数该怎么算怎么算。

int a = 10;
int b = 20;
System.out.println(a+b);//30
System.out.println("w"+a+b);//w1020,之所以输出w1020,是因为在a+b之前出现了字符串连接,那么请看下面这个
System.out.println(a+b+"w");//30w,我前面也说了,当字符串出现之前,该怎么计算怎么计算,出现之后就当字符串连接。
System.out.println(a+b+"w"+a+b);//30w1020
​

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值