一. 概述运算符
之前的一些讲解的是错误,在常量和变量那一块,围绕地都是将常量赋值给变量,在这里谈论的才是运算,之前的都不算是运算,可以算是定义。数据最主要的作用就是用来运算的,用来处理的。这里将要讨论运算过程中,用到的各种运算符,主要是算术运算符。
在现阶段学习的中,我学到两点:计算机的运算是一步一步来的,而且每一步之后,都有规则。默认数据类型是一直在起作用。
二. 算术运算符
JAVA运算中默认的数据类型,在算术运算所起的作用,将不同于日常生活中的四则运算。结果如下:
按照日常习惯,结果就应该是6370,但是DOS显示为6000。原因就在于计算的每一步,JAVA的默认类型这个规则都在起作用。6370/1000后,结果应为6.37,但是在JAVA中,默认结果为int(为什么默认的不是浮点型?),这样就将结果转化为6,6再乘以1000,最终显示为6000。
除了四则运算还有一个模运算(取余),符号为%,例如System.out.println(5%2);
这里有一点挺奇怪的:输出语句的()里,到底输出的是一个整体,还是计算的结果?这该如何判定。
模运算还有扩展:有负数参与的模运算。如果是-5%2,那么结果是-1;如果是5%-2,那么结果是1。就是说模运算中,结果是正还是负取决于左侧的被取余数,为什么呢?
模运算到底什么时候使用?任何数在模2的时候,不是0就是1,这会用在开关算法中。(开关算法就是只有两种情况)
除了模运算,还有连接符+,这就意味着+既可以代表加号,也可以代表连接符。在前面我们也抛出了这个疑问,到底怎么判定输出是一个整体,还是运算的结果?在这里我们得到了结果。判定的标准就是,如果是直接相加,比如3+2,那么就是输出结果;如果是3+"2",那么输出就是一个整体32。任何数据和字符串连在一起,输出的都是整体。有+和字符串的存在,使得输出的都是字符串。比如“5+5=”+5+5,输出的结果是5+5=55,这里计算时,其实是分为两部来的。先是"5+5="+5进行运算,得到的结果是"5+5=5",然后是运算"5+5=5"+5,最终的结果是5+5=55。由此可见计算是一步一步的来的。这里还可以变形一下,"5+5="+(5+5);这里加了一个(), 有了一个优先级。
这里还有一个变形,int a=4, b=5; System.out.println( ); 如果想要将4和5分别输出,这个括号里面应该怎么写?我自己提出的一个思路是a+"b", 这样输出的结果是4b,说明,虽然在{}里,b是定义好的变量,但是在()里,"b"就相当于是一个字符串,如果b相当变量使,就不能加""号。正确的写法是(a+","+b),输出的结果是4,5。原理就在于只要有一个字符串,整体就是字符串。→字符串的连接符应用。
总结:本节谈论了两个知识点,取模和连接符。不懂之处在于,取模运算中,结果的正负取决于左侧数字的正负。