`
李灵晖-raylee
  • 浏览: 128821 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

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)


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


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

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

目录



版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics