Java基础08(运算符)

Java基础08

在之前我们接触过Java之中的数据,及其他的类型,也学过数据量,有常量和变量,那么如果想在程序中执行运算的话,数据量和数据都有了,那么差的是什么呢?差的是运算符以及它的运算法则,这几样加在一起,才能构成一个完整的运算过程,前面学习过了数据和数据量,那么这一章就介绍一下运算符以及它的运算法则。

运算符
在这里插入图片描述

运算符

我们学习不能盲目地去学,要有目标,有方向,有计划地去学习,如果只是跟着知识点走,始终抓不住知识的重点,知识是死的,人是活的,我们得在有限的时间去学更多的东西,只能抽出知识最精华的部分去学习,这样即方便又高效。

那么运算符该怎么学?
按照以往学习的惯例,我们应该学习它的定义,先了解它是什么,再去了解它有哪些形态或者形式,有哪些变式这些都很关键,学了这些就到了它的用法,因为不同的场景每个符号或者数据代表的含义都不同,所以我们得了解它们在不同场景表达的意思,才能更好地便于我们去使用或者选择它们。

运算符

什么是运算符?
运算符早在我们小时候都学过,加减乘除,四则运算的符号,等号等等,都是运算符,但是在Java语言中我们所学过的运算符都有另外的含义,所以我们要重新学习这种早已熟记于心的符号。

运算符的分类
①:算术运算符
②:关系运算符
③:赋值运算符
④:位与逻辑运算符

【1】.算术运算符
一元:++(自增)、–(自减)
二元:+(加法)、-(减法)、*(乘法)、/(除法)、%(取余)

什么是一元、二元?
①:一元代表的是一个操作数,二元代表的是两个操作数。
②:以加法来举例,x+y,这个式子想要成立并且运算,是基于x与y两个数,以及他们之间的加法来完成的,而加法两边x、y就是两个操作数。

一元运算符
(1)++(自增)、–(自减)
1.什么是自增、自减?
一个数自己对自己增加(减少)一,不停地增加(减少),直到满足条件为止。
2.自增的用法:
①:要进行自增的数,后面跟++,就代表自增
设一个数为x,则x++,就代表x进行了自增,但是这个自增符号在x之后,则代表的是先对x进行赋值,再进行自增。
②:那如果++在x的前面呢?
++在x的前面,就代表先进行了自增,再对x进行赋值。
③:自减的用法与自增的用法相同,这里就不在一一介绍了。
⑤:以自增举一个例子(自减类比):

  • 我们设一个数为i,则我们有i++与++i;

  • i++:先将i赋给结果,然后变量i再自增
    ++i:i变量先自增,然后再赋给结果

  • i++:先使用再自增。变量会增1,结果不会
    ++i:先自增再使用。变量和结果都会增1

二元运算符
+(加法)、-(减法)、*(乘法)、/(除法)、%(取余)
加减乘除取余,这个在小就学过,它们的使用也很简单,这里主要介绍加法的几种用法,其他几种简单介绍一下
(1)-、*、/、%的用法:
设int a=11;int b=20;
减法:num1=a-b;
乘法:num2=a*b;
除法:num3=b/a;
取余:num4=b%a;
在这里插入图片描述

(2)+
加法表示的意义有很多种:
①:表示加法,a+b=c;在这里表示的就是a加上b等于c;
②:表示拼接,用作字符串拼接符
因为数值型与字符串型用加法进行运算的时候,因为不属于一个类型,不兼容,所以它们的值只能用拼接来进行。
假如有一个String类型的w,给他赋值为:一个数字,再有一个int类型的a,给他赋值为10,现在我们让他们相加再一起,输出的结果如下图中Console控制台所示:
在这里插入图片描述
从这里可以看出来,String加上int类型的时候,加法符号,代表的是拼接,把“一个数字”与“a”拼接起来了,而不是加在一起。

③:表示连接,当做连接符使用
我们现在学的输出语句:System.out.println();这个语句中的小括号,里面代表的往往是输出值的结果,在Java的语法中,假如我要输出几个数的运算结果,可以有很多种方法,可以在外面先定义好,直接输出,或者是在输出语句中完成,我们来举个例子:

  • 假如有两个int类型的数,一个为a,一个为b,两个数的值都为10,我们让他们相加得到的值为num,得到结果为num=20,我们有两种选择:

  • 解法一:int a=10;int b=10; int num=a+b;

  • System.out.println(num);

  • 这样我们可以用4步运算出num的值,为20。

  • 解法二:int a=10;int b=10;

  • System.out.println(a+b+"="+“num”);

  • 这样我们可以三步就算出num的值,为20.

这两种做法都可以做出来,同样输出的值都为num=20,但是第二种涉及到了一个问题,就是加法的使用,System.out.println(a+b+"="+“num”);这个里面有三个加法,但是这三个加法有两种用法:a+b代表的是a加上b,但是b后面和num前面的那个加号,代表的就是连接,这里加法就当做连接符来使用,把a+b和等号连接起来,再把等号和num连接起来,来完成这样一个关系式。

加号的综合运用
假设我要进行a+b=c=20的运算,但是我要输出num等于ab20的拼接,我该怎么做?
首先,先给abc定义类型,都为int型,并给a和b都赋值为10;(int a=10;int b=10;)
然后用一个关系式表示c与ab的关系:a+b=c;(int c=a+b;)
然后在输出语句中完成拼接以及输出:System.out.println(“num”+"="+‘a’+‘b’+c);
最后在Console控制台得出结果:num=ab20
图例:
在这里插入图片描述

(3). " / “与 " % "
①:” % “:整数的求余,也有另一个名称:取模
②:当” / "参与运算的时候,两个数都是整型时,表示整数除法,输出的结果都为整型,除出来结果后面的小数直接省略掉,只保留前面的整数,如果其中一个不是整型的时候,则表示浮点除法。
例:
15/2=7;(省略掉后面的小数,即使是9,也要省略,没有四舍五入的说法)
15.0/=7.5;(浮点运算,可以表示出后面的小数部分)
15%2=1;(取模运算,算余数)

  • Java支持三元操作符**"?:"**,这个符号有时很有用,可以提高条件语句的效率,这里只先提一下,以后再做详细介绍。

【2】.关系运算符
==(判断符)、!=(不等于)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)
因为比较简单,所以就先简介一下关系运算符的用法:
a==b;是代表判断a是否等于b,这个在赋值运算符会着重介绍;
a!=b;这个式子代表a不等于b;
a<b;a>b;这两个代表a小于b以及a大于b;
a<=b;a>=b;这两个代表a小于等于b以及a大于等于b;
在这里插入图片描述

【3】.赋值运算符

=(等号)
等号的用法很简单,但是它和关系运算符中的一个运算符很像,这里理一下它们的关系。

1.“==”“=”
①:“=”代表的是赋值,假如a的值为1,那么就可以表示为a=1;
②:“==”代表的是判断,判断这个等式是否成立:
假如有一个a=10;有一个b=20;我们可以用“==”来判断a等不等于b,表示为a==b
③:等号单纯的只代表赋值,而双等号则表示判断,在条件语句中,判断这个等式是否成立,如果满足则输出true,不满足则输出false;
④:举一个例子:
int a=11;
int b=20;
我们判断a是否等于b,在输出语句中使用双等号来判断,所以有:System.out.println(a==b);
我们知道a不等于b,一个为11一个为20,所以a==b这个式子判断过后发现等式不成立,所以输出false,错误。
图例:
在这里插入图片描述

【4】.位与逻辑运算符
逻辑与位运算符是两个完全不同的概念,但是它们长得又十分相似,用法却又完全不一样,位运算符是进制之间的比较运算,而逻辑运算符却是真或假的判断,输出的是Boolean类型的值。

1.位运算符
处理整形类型时,可以直接对组成整数的各个位完成操作。

位运算符包括
 与(&)、或(|)、非(~)、异或(^)
 
位运算符
①:&(“and”)
&:二元运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101,转为二进制:1111110010&10001001101,比较结果为:1000000转为十进制: 64。所以1010&1101=64;
②:|(“or”)
| :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
③:~(“xor”)
~:0变1,1变0
④:^(“not”)
^:两边的位不同时,结果为1,否则为0.如1100^1010=0110
⑤:">>“与”<<"
">>“与”<<"可以用来将为模式左移或者右移。
最后,>>>运算符会用0填充高位,这与>>不同,它会用符号位填充高位。

注释
当位运算符应用在布尔值上时,"&“和” | “运算符也会得到一个布尔值。这些运算符与”&&“和” || “运算符很类似,不过”&“和” | "运算符不采用"短路"方式来求值,也就是说,得到计算结果之前,两个操作数都需要计算,下面会详细介绍。

2.逻辑运算符

  • Java沿用了C++的做法,使用"&&“表示逻辑"与"运算符,使用” || “表示逻辑"或"运算符。从”!=“运算符就可以想到,感叹号”!“就是逻辑非运算符。”&&“和” || "运算符是按照"短路"方式来求值的:如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。

逻辑运算符包括
与(&&)、或(||)、非(!)

逻辑运算符
①:&&(与),又名"短路与"
&&:逻辑与,当"&&“两边的值都为true,结果才为true,否则就输出false。
简单的来说,就是只要一个值为false,则直接输出false;如果第一个值为false,则不需要计算后面的值,直接输出false。
②: || (或),又名"短路或”
||:逻辑或,当" || “两边的值都为false时,结果才为false,否则就输出true。
简单的来说,就是只要一个值为true,则直接输出true;和”&&“一样,如果第一个值为true,则不需要计算后面的值,直接输出true。
③:!(非)
!:逻辑非,代表取反的意思,如果得到的值为false,加一个”!“则得到false的反义词:true;如果得到的值为true,加一个”!",则得到的结果为false。


如果有两个int类型的数,分别为a、b与c,并且分别给他们一个值,一个为10,一个为20、一个为30。
我们可以得到,int a=10;int b=20;int c=30;并且a<b<c;
如果用abc比较,则会有几种情况:
(1)&&
①:a<b && b>c;
a=10自然小于20的b,但是20的b肯定要小于30的c,所以这个式子只成立了一半,也就是说,只成立了a<b的前半段,但是我们用&&来连接,因为b>c不成立,则我们得到的结果就为false。
②:a>b && b<c;
从这个式子可以看到,前半段的a>b这个式子不成立,而后面半段的b<c成立,但是逻辑与也称短路与,因为前面半段式子得到的是false,则不需要计算后面的值,直接得到结果false,即使后半段的式子是true/false都不去考虑。
(2)||
①:a>b || b<c;
a大于b显然不成立,则第一段的式子为false,但是第二段的b<c成立,值为true,逻辑或是两个值都必须为false,结果才为false,否则为true,显然这个式子不满足两边都等于false的条件,所以输出的结果为true
②:a<b || b>c;
这个式子前半段的a<b成立,为true,则不需要计算表后面的b>c,直接输出为true,因为逻辑或是只要有一个值为true,则直接输出true,而逻辑或又称短路或,假如前半段为true,后半段为true/false,都不再去考虑,直接输出前面的true。

位运算符与布尔值
当为运算符在数值型的数据运用时,执行的是进制的操作,而当位运算符应用在布尔值上时,"&“和” | “运算符也会得到一个布尔值。这些运算符与”&&“和” || “运算符很类似,不过”&“和” | "运算符不采用"短路"方式来求值,也就是说,得到计算结果之前,两个操作数都需要计算,而此时的位运算符,也就变了一个含义,执行的是逻辑运算符的操作,只不过与短路与、短路或的功能有些许的不同。

当位运算符运用在布尔值上时,其实和逻辑运算符一样,执行的也是逻辑运算符的功能,它们的功能分别为:
①:"&"、" | "
如果式子的两边都为true时,其结果才为false,但是与"&&“不同的是,”&“在运算的时候,即使左边的式子为false,但也还要执行右边的式子,才输出最终的结果,而” | “也与” || “相似,要式子两边都是false,结果才为false,否则为true,但是它与”&“一样,都是要执行两个式子,对两个式子分别判断,才能输出最终值,但是”&&"、" || “更加得到聪明,它们也有另一个称呼"短路与”、“短路非”,为什么叫短路,因为它们发现第一个式子达到输出要求的时候,它们就会停止,直接输出相应的值,这样的优点就是能够优化计算的步骤,省去了时间。
②:"^":
当异或运用在布尔值时,表达的是,式子左边为真,右边也为真时,得到的结果为假,简单的来说,就是"相同为假,不同为真",false与false输出值为false,true与true输出值为false,当true与false在一起时,等式两边不相等,所以输出true。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值