java算数运算符

常见的算数运算符:

+ 求和
- 相减
* 乘积
/ 相除
++ 自加1
-- 自减1
% 取余、求模

例子:

int a = 20;
int b = 3;

System.out.println(a+b); //23
System.out.println(a-b); //17
System.out.println(a*b); //60
System.out.println(a/b); //6 因为是int类型,所以结果也是int类型,整数相除只能得到整数。如果想得//到小数,必须把数据变化为浮点数类型。
System.out.println(a%b); //2
//获取的是除法操作的商,%获取的是除法操作的余数

 自增自减运算符

单独使用:放在变量的前面和后面效果一样

参与运算的时候:

放在变量的前面,先自增或者自减,然后再参与运算

放在变量的后面,先参与运算,再自增或者自减

例子:1

public class transform {
    public static void main(String[] args) {
    	int a = 10;
        int b = 10;
        int c = 10;

        a = b++;  //a=b=10,b=b+1=11                
        c = --a;  //c=a-1=9,a=a-1=9                              
        b = ++a;  //b=a+1=10,a=a+1=10                     
        a = c--;  //a=c=9,c=c-1=8                              

        System.out.println("a = " + a + ",b = " + b + ",c = " + c);
	}
}
output:
a = 9,b = 10,c = 8

2

public class transform {
    public static void main(String[] args) {
    	int x = 4;
        int y = (x++)+(++x)+(x*10);
        // y=   4   +   6  +  6*10 =70,第一个括号取x未自增前,但是取完值后x自增运算,第二个取//x再次自增后的值,x经过两个括号的运算之后变为6,所以答案为70
        System.out.println("x = " + x + ",y = " +  y);
	}
}

3

public class transform {
    public static void main(String[] args) {
    	byte b = 10;
        b = b + 1;   //此行错误,b为byte类型,等式后边b+1计算时将b提升为int类型,结果是int类型 //,不是byte类型   ,修改为下行
        b=(byte)(b+1)          
        System.out.println("b = " + b);
	}
}

4

public class transform {
    public static void main(String[] args) {
    	int i = 0;
    	i = i++;
    	System.out.println(i);
	}
}

output:
0
解释:先用一个临时的变量temp保存变量自增前的值,然后变量自增,
最后自增表达式会把temp的值作为整个表达式的值返回,也就是把temp的值返回给了i,
由于temp保存的是i自增前的值,所以i的值不会变。

对第4个例子,通过反汇编命令(javap  -c class文件名) 查看class文件 ,如下

0: iconst_0 //将常量’0’push入操作数栈(operand stack,与普通栈不同)
1: istore_1 //将常量’0’存储到栈(注意不是堆,局部变量存储在栈中)
2: iload_1 //将常量’0’载入到操作数栈
3: iinc 1, 1 //在栈中将a增1,a从’0’变为’1′
6: istore_1 //在操作数栈中将常量”重新存储到栈,a从’1’变回’0′
7: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
10: iload_1
11: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
14: return

 

来源http://www.monkey1024.com/javase/142

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值