Java日记 05 运算符2.0

今天继续昨天的内容

赋值运算符

赋值运算符即: “=”。
Java中的“=”和数学中的含义不同,比如:

int a=10,b=20;
 a=a+b;
 b=a-b;
 a=a-b;
 System.out.println("a="+a+"\n"+"b="+b);

如果将这几行代码中的“+”用数学符号理解的话,那肯定是一头雾水,因此在这里,“=”表示赋值。比如第一行表示将“a+b”的值赋予“a”,下面同理。所以这几行代码的本质是将a和b的值交换

运行结果:

在这里插入图片描述

了解了赋值,现在来说说“+=”。
它的涵义也很简单:

int a=10;
a+=20;
system.out.println(a); //30

a+=20就是a=a+20

		int a=10;
		a+=20;
        int c=a+20;
        System.out.println(a+=20);
        System.out.println(a);
        System.out.println(c);

很显然这几个输出的结果都是30。

那么来看看这个:

short s=10;
        System.out.println(s+=20);
        s=s+20;
        System.out.println(s);

结果是什么呢?两个30吗?

事实上,“s=s+20”这行代码会报错。
下方的红线即代表出错了
为什么呢?还记得昨天学习的算术运算符吗?在“s+20”中,“20”是int型数据,“s”在算数运算符“+”的作用下自动升级成int型,所以s+20的结果是一个int型数据,而这时若还将它放入short型数据s中则会报错类型不兼容。而第一个则会正常输出30。
*因此:扩展的赋值运算符(+= 、-=、 =、/= 、%=)底层隐含了强制类型转换

自增自减运算符

“++” 、 “- -”
为方便起见,这里只讲“++”。

①单独使用

直接上代码:

int i=10;
	i++;
	System.out.println(i);
	++i;
	System.out.println(i);

在这里插入图片描述
由结果我们不难发现,不论i是在“++”的前面或是后面,i都被加了1。

②参与操作使用

int i=10;
int j=i++;
        System.out.println("i="+i);
        System.out.println("j="+j);

结果:
在这里插入图片描述
i同样是自加了1,变成了11,而赋给j的值却是i的初始值10。

int i=10;
int j=++i;
        System.out.println("i="+i);
        System.out.println("j="+j);

在这里插入图片描述

所以, 在参与操作的时候,i++是先赋值再++,++i是先++再赋值。

关系运算符

这里就与数学想通度极高了,直接上代码

int a=0,b=0;
a==b; //判断a与b是否相等,成立 为true,不成立为false 注意!是两个等号!
a!=b; //判断a与b是否不相等,(后面内容相同)
a>b;
a>=b;
a<b;
a<=b;

后四个与数学中完全一样,不赘述。

   	    int i=10;
        int j=++i;
        System.out.println("i="+i);
        System.out.println("j="+j);
        System.out.println(i==j);

在这里插入图片描述

关系运算符的结果都是boolean类型,即,要么是true要么是false。

逻辑运算符

在数学中,我们要表示一个数x大于3且小于6,我们会写作:3<x<6,而在Java中,则需要写成:x>3&&x<6;其中,&&就是逻辑运算符,表示“与”。逻辑运算符都有:
&:逻辑与; a&b,全true才true(换言之有false则false);
| :逻辑或; a|b,有true则true;
^ :逻辑异或;a^b,相同为true,不同为false
! :逻辑非。!a、!!a,参考数学中的负号,!a与a的结果正好相反但是!!a的结果是和a相同的
a和b可以是数据,也可以是语句。

短路逻辑运算符

①&& : 短路与
②|| : 短路或
他们前边的有什么区别呢?
还是先看代码:

int i=10,j=20;
        System.out.println((i++>100)&(j++>100));
        System.out.println("i="+i);
        System.out.println("j="+j);

在这里插入图片描述

int i=10,j=20;
        System.out.println((i++>100)&&(j++>100));
        System.out.println("i="+i);
        System.out.println("j="+j);

在这里插入图片描述
不难看出,在两个条件均为false的情况下,&&后面的语句并不会运行。其实从名字我们就能够很好的理解了——“短路”,你品,你细品。前面我们已经说过,逻辑运算符与中只要有一个false结果就是false,所以当计算机得知第一个语句是false时它不会再去走第二个语句,因为第二个语句true false与否对于结果已经不重要了。

所以, && 和 ||的作用与前面的 & 和 | 相比,作用相同,但是具有短路效果。

注意!
&&如果左边为真,右边执行;左边为假,右边不执行。
||如果左边为假,右边执行;左边为真,右边不执行。

三元运算符

  • 格式:关系表达式?表达式1:表达式2;
  • 范例:a>b?a:b;
  • 计算规则:
  • 首先计算关系表达式的值,
    -如果值为true,表达式1的值就是运算结果;
    -如果值为false,表达式2的值就是运算结果。
int i=10,j=20;
System.out.println(i>j?i:j);

在这里插入图片描述
很简单吧?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值