从头认识java-2.2 算术操作符

来源:互联网 时间:1970-01-01

这一章节来聊一下算术操作符

1.自动转换结果类型。

 

package com.ray.ch01;public class Test { public static void main(String[] args) { int a = 2, b = 3; int c = a / b; int d = b / a; System.out.println(c); System.out.println(d); }}

看上面的代码,b/a结果是1.5,明显是float类型,但是由于d是int,因此直接转换成int,而且在转换的过程中直接去掉小数部分。

 

 

2.表达式里面的变量或者常量自动转型,而且是向右转型,往能够容纳更大数据的类型转换。

转型方向:byte->shot(char)->int->long>float->double

 

package com.ray.ch01;public class Test { public static void main(String[] args) { byte a = 2, b = 3; int c = a / b; int d = b / a; // a=c+d;//只能向上转换,不能向下转换,这里报错 System.out.println(c); System.out.println(d); }}

从代码可以看到,d=b/a没有问题,但是a=c+d确实报错,这就是类型转换的问题。

 

 

3.一元加与一元减

一元减:就是把数值取反。例如-(+1)=-1,-(-1)=1

一元加:只是把类型提升为int,对于大于int类型的数据不起作用。

下面是代码例子:

 

package com.ray.ch01;public class Test { public static void main(String[] args) { byte a = 2; double c = 2.1; int b = 1 * -a;//等价于 int b = 1*(-a) double d = 2 * -c; System.out.println(getType(+a)); System.out.println(getType(+d)); System.out.println(b); System.out.println(d); } public static String getType(Object o) { return o.getClass().toString(); }}

输出:

 

class java.lang.Integer
class java.lang.Double
-2
-4.2

从上面的例子我们可以看到,1*-a这个在编译器里面是成立的,因此我们为了可读性,一般会写成1*(-a)

 

总结:这一章节我们讨论了算术操作符的三个注意点。

 

 

这一章节就到这里,谢谢。

-----------------------------------

目录

 


相关阅读:
Top