您尚未登录,请登录后浏览更多内容! 登录 | 加入最MC

QQ登录

只需一步,快速开始

 找回密码
 加入最MC

QQ登录

只需一步,快速开始

查看: 78|回复: 0
打印 上一主题 下一主题

[【少女の茶会】] 洞察什么是Java运算Java运算:比九九乘法表还简单

[复制链接]
跳转到指定楼层
楼主
发表于 2022-1-27 01:58:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

提到运算,你可能会立即想到加、减、乘、除四则运算以及九九乘法表。J语言中有很多进行数据运算的方式,比如:算术运算、比较运算、逻辑运算、赋值运算、目运算等。每一种运算方式,又都包含了很多的运算符,小编把这些运算符形象的称为十八般武艺,学习J中的运算,就是学习这些运算符的使用,也就是修炼这十八般武艺的过程。爱站云的相关资讯可以到我们网站了解一下,从专业角度出发为您解答相关问题,给您优质的服务!








运算符,顾思义,就是对数据(常量和变量)进行运算的符号。我们把数据用运算符连接起来,就构成了可以进行运算的表达式。比如1+2、*4等等。看看这行代码:



T{



(S[]){



=1+2;使用加号(+)将常量1和2连接起来,构成了一个加法表达式,并把运算结果赋值给变量



S();输出的值



}



}



上面的式子就是使用运算符加号(+)将常量1和2连接起来,构成了一个加法表达式,并把运算结果赋值给变量,不出意外的话,打印结果应该是:







事上,参与运算的数据可能会有很多,也有可能是变量、常量等混合在一起进行运算,比如(接上面代码):



T{



(S[]){



=1+2;使用加号(+)将常量1和2连接起来,构成了一个加法表达式,并把运算结果赋值给变量



S();输出的值



=+10;变量和常量同时参与运算



S();输出计算结果



}



}



打印结果:



1



除此之外,运算的方式也有很多,加法、减法、取余(取模)、比较运算等等,但它们都有一个共同的特点:每个表达式都会有一个运算结果。我们根据表达式运算结果的数据类型,将表达式的类型进行归纳分类,比如:



整型表达式:运算结果为整数。比如:1+2、10*20、5-,它们的运算结果都是整数

浮点型表达式:运算结果为浮点数。比如:14*2、0618+082、01,它们的运算结果都是浮点数

布尔型表达式:运算结果为布尔类型的值。比如:21、(20-10)15,它们的运算结果都是布尔型:要么、要么。

练好了运算符、表达式的基本功,现在,我们可以开始学习真正的武艺了。



算术运算



先来几个简单的招式,好好复习我们小学时期的算术运算。J中的算术运算符【大概、也许】有七种:



前面四个运算符还算常见:+、-、*、,虽然乘号(*)和除号()跟我们以前见到的长得不一样,但并不难理解。百分号(%)在这里是取余、取余的意思,也就是说,使用百分号(%)可以得到数字7除以之后的余数:1。而++和--就比较陌生了,它们分别代表数据自增1和自减1,这种运算是我们以前没见过的,接下来,我手把手教你每个招式运算符的用法。



1、加、减、乘、除



先学会舞刀弄四则运算的用法,上代码:



T{



(S[]){



1=;



2=4;



=5;



4=10;



1加法运算



=1+2;



2减法运算



=2-1;



乘法运算



=2*;



4除法运算



=4;



分别输出运算结果



S();输出加法计算结果



S();输出减法计算结果



S();输出乘法计算结果



S();输出除法计算结果



}



}



输出结果:



7



1



20



2



运算结果完全没有新意。



除法运算有个细节要注意:如果相除的两个数进行运算,除不尽怎么办猜想一下,下面这个行代码会得到什么结果:



S(7);即7,结果是什么,2还是2,还是1



看结果:



T{



(S[]){



S(7);



}



}



结果居然是2!为什么会这样



切记一点:除法运算符(),得到两个数据相除的商,在J语言中,整数除以整数结果还是整数,如果除不尽,会舍弃余数。也就是说,7的商是2,余数为1,因为参与运算的被除数、除数都是整数(类型),所以计算结果还是整数,舍弃了余数部分,结果是2。



是不是有一种恍然大悟的感觉。这是J中的运算与我们以前的认知第一个不一样的地方。



2、取模、自增(++)和自减(--)



再教你个进阶招式(%、++、--):



T{



(S[]){



1=;



2=4;



=5;



4=10;



=%1;取模取余运算,5对取模,结果是



S();输出取模运算结果



2++;2自增1



4--;4自减1



S(2);输出自增之后的运算结果



S(4);输出自减之后的运算结果



}



}



输出结果:



2



5



9



百分号(%)是取模运算,也叫取余运算,是除法运算的一种扩展,只不过除法运算得到的结果是商,而取模运算得到的结果是余数。如果两个数进行取模运算,结果是0,意味着什么没错,这就是整除的效果,所以,取模运算(%)可以用来判断两个数是否能够整除,也就是说,被除数是除数的倍数。



加加(++)和减减(--)运算是让变量进行自增或自减。这里要注意,不能将这两个运算符直接使用到常量上,比如下面的代码是错误的:



1++;不允许常量自增或自减



思考一下,为什么那是因为常量的概念,规定了它不能够被修改,所以,如果你想要获得2,那么直接使用字面值常量2就行了,完全不需要使用另一个常量进行运算。还有个细节,上面的代码,也可以把++和--放到变量的前面,这样的运算结果是一样的(放在变量前、后的代码不能同时存在,否则数据会进行两次运算哦):



来,我们试试把++和--写到前面



++2;2自增1



--4;4自减1



T{



(S[]){



1=;



2=4;



=5;



4=10;



=%1;取模取余运算,5对取模,结果是



S();输出取模运算结果



2++;2自增1



4--;4自减1



++2;2自增1



--4;4自减1



S(2);输出自增之后的运算结果



S(4);输出自减之后的运算结果



}



}



输出结果没有变化:



5



9



当然,加加(++)和减减(--)也可以像别的运算符那样,把结果赋值给一个新的变量,就像这样:



T{



(S[]){



1=;



2=4;



=5;



4=10;



5=2++;猜想:2自增1,然后赋值给新变量5



6=4--;猜想:4自减1,然后赋值给新变量6



S(5);输出自增之后的运算结果



S(6);输出自减之后的运算结果



}



}



输出结果:



4



10



咦,怎么还是原来的值难道是没有发生运算



看来我们的猜想不正确,原来



5=2++;结论:2先赋值给新变量5,然后才进行自增运算



6=4--;结论:4先赋值给新变量6,然后才进行自减运算



我把加加(++)和减减(--)放到变量前面试试:



T{



(S[]){



1=;



2=4;



=5;



4=10;



5=2++;结论:2先赋值给新变量5,然后才进行自增运算



6=4--;结论:4先赋值给新变量6,然后才进行自减运算



5=++2;猜想:2自增1,然后赋值给新变量5



6=--4;猜想:4自减1,然后赋值给新变量6



S(5);输出自增之后的运算结果



S(6);输出自减之后的运算结果



}



}



输出结果:



5



9



终于变成正确答案了:



5=++2;结论:2自增1,然后赋值给新变量5



6=--4;结论:4自减1,然后赋值给新变量6



但是,这是为什么呢加加(++)和减减(--)放到变量前和放到变量后为什么结果不一样,到底数据有没有进行运算呢剖析一下这两招:





单独使用:放在变量前或后结果一样

参与其它运算:



在变量前,先自增(自减),再进行其它运算



在变量后,先以原值进行其它运算,再自增(自减)



所以,第一次把++和--放在变量后,是把变量原来的值赋值给新变量,而自增(或自减)的值被抛弃了,因此打印的是原来的值;第二次把++和--放在变量前,是把运算之后的值赋值给新变量,因此打印的是计算之后的数据,这就是加加(++)和减减(--)这两个运算符的底层原理。++和--是一种特殊的运算,这是再一次不同于我们以往认知的一个地方。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友