JAVA数据运算
JAVA中对不同数据类型的数据进行计算操作。
计算方式
Java中数据计算方式包含:加、减、乘、数、取余、位运算、位移运算、自增/减。
public static void main(String[] args) {
//加
int a=10,b = 20;
System.out.println(a+b);
//减
System.out.println(a-b);
//乘
System.out.println(a*b);
//除
System.out.println(b/a);
//取余
System.out.println(a%b);
//自增
System.out.println(a++); //先执行代码后增加;
System.out.println(++a); //先增加后执行代码;
//自减
System.out.println(a--); //先执行代码后减少;
System.out.println(--a); //先减少后执行代码;
//移位运算
System.out.println(a<<2);//转二进制左移两位 40
System.out.println(a>>2);//转二进制右移两位 2
//位运算
//逻辑与
System.out.println(0&1);//0
System.out.println(0&0);//0
System.out.println(1&1);//1
System.out.println(true&false);// false
System.out.println(true&true);// true
System.out.println(false&false);// false
//逻辑或
System.out.println(0|1);//1
System.out.println(0|0);//0
System.out.println(1|1);//1
System.out.println(true|false);// true
System.out.println(true|true);// true
System.out.println(false|false);// false
//逻辑非
System.out.println(~0);//-1
System.out.println(~1);//-2
//逻辑异或
System.out.println(0^1);//1
System.out.println(0^0);//0
System.out.println(1^1);//0
System.out.println(true^false);// true
System.out.println(true^true);// false
System.out.println(false^false);// false
}移位运算:
- 将数据转换为二进制数再根据
<<和>>确定对数据进行左移或者右移; - 左移代表X2,右移代表÷2;
<<<和>>>代表无符号的位运算,在对整型进行位移时也会把最高位的符号位进行移动,右移时高位补零负数回变成正数。^c9a0e8。
运算优先级
在java计算中,不同计算符号对应优先级从高到底如下:
()!~++--*/%+-<<>>>>>&|+=-=*=/=
类型自动提升与强制转型
在运算过程中,如果参与运算的两个数类型不一致,那么计算结果为较大类型的整型。例如,short和int计算,结果总是int,原因是short首先自动被转型为int
// 类型自动提升与强制转型
public class Main {
public static void main(String[] args) {
short s = 1234;
int i = 123456;
int x = s + i; // s自动转型为int
short y = s + i; // 编译错误!
}
}
也可以将结果强制转型,即将大范围的整数转型为小范围的整数。强制转型使用(类型),例如,将int强制转型为short:
int i = 12345;
short s = (short) i; // 12345要注意,超出范围的强制转型会得到错误的结果,原因是转型时,int的两个高位字节直接被扔掉,仅保留了低位的两个字节:
// 强制转型
public class Main {
public static void main(String[] args) {
int i1 = 1234567;
short s1 = (short) i1; // -10617
System.out.println(s1);
int i2 = 12345678;
short s2 = (short) i2; // 24910
System.out.println(s2);
}
}