算术运算符:- + / % -- ++
前面4个都会,减,加,取商,取余,
/ 有个窍门,若想得到结果为double类型,可以这样:
[代码]xml代码:
?
1 2 3 4 5 | int x = 4;
int y = 5;
System.out.println(x/y); // 这个结果肯定是0,因为只取整数位
System.out.println(x*1.0/y); // 结果为0.8 因为x*1.0已经改变了
//x 的类型
|
++、-- 的运用:
单独使用的时候,符号放在变量的前面和后面的效果一样的(对变量自身自增1或者自减1):
[代码]xml代码:
?
1 2 3 4 5 6 | int x = 3;
int y = 4;
x++; //4
y++; //5
++x; //4
++y;//5 -- 也一样
|
参与运算使用的时候
--、++放在变量的前面,先自增/自减,然后再参与运算(得到的值给它)
--、++放在变量的后面,先参与运算(原来值给它),然后再自增、自减
例子:
[代码]xml代码:
?
1 2 3 4 5 6 7 8 9 | int a = 3;
int b = 4;
int c = a++;
int d = b--;
System.out.println(a); //4 a 先自增
System.out.println(b); //3 b 先自减
System.out.println(c); //3 c 得到a原来的值
System.out.println(d); //4 d 得到b原来的值
|
?
1 2 3 4 5 6 7 8 9 | <pre class="brush:xml;auto-links:false;" style="line-height: 25.2000007629395px;">int a = 3;
int b = 4;
int c = ++a;
int d = --b;
System.out.println(a); //4 a 先自增 再把结果赋予给c
System.out.println(b); //3 b 先自减 再把结果赋予给d
System.out.println(c); //4 c 得到a自增后的值
System.out.println(d); //3 d 得到b自减后的值</pre>
|
练习:
[代码]java代码:
?
1 2 3 4 5 6 7 | int a = 10;
int b = 10;
int c = 10;
a = b++; // a=10,b=11,c=10
c = --a; //a=9,b=11,c=9
b = ++a; //a=10,b=10,c=9
a = c--;//a=9,b=10,c=8
|
练习:
[代码]java代码:
?
1 2 3 4 5 6 7 8 | int x = 4;
int y = (x++)+(++x)+(x*10);
(x++):x=4 参与运算,结束后x=5;
(++x):x=6 参与运算,结束后x=6;
(x*10):x=6 参与运算,结束后x=6;
y=4+6+60=70
System.out.println(x);
System.out.println(y);
|
赋值运算符:= 扩展赋值运算符: += -= /= %=
int x = 10:基本赋值运算符
x += 10 :x = 20,左右两边 x和10相加,再赋值给x;
x -= 10:x=0,左右两边 x和10相减,再赋值给x;
x /= 10:x=1,左右两边 x和10相除取商,再赋值给x;
x %=10: x=0, 左右两边 x和10相除取余,再赋值给x;
面试题:
[代码]java代码:
?
1 2 3 | short s = 1, s = s+1;
short s = 1, s+=1;
上面两个代码有没有问题?如果有,哪里有问题?
|
答:
第一个有问题,因为会损失精度;(如前面说过的byte)
第二个没有问题,因为扩展的赋值运算符隐含了一个强制类型转换。
原文链接:http://www.apkbus.com/blog-833059-61612.html