数运算符
符号:+、-、*、/、%、++、–
一、运算符的使用
1.+,-,*,/,%:
public class Test01{
public static void main(String[] args){
int n1 = 10;
int n2 = 5;
int reuslt = n1 + n2;
System.out.println(reuslt);//15
System.out.println(n1 - n2);//5
System.out.println(10 * 5);//50
System.out.println(10 / 5);//2
System.out.println(10 % 3);//1
}
}
2.++,–:
++:在自身的基础上加1。
++x:先自增1,再使用;x++: 先使用,再自增1。
public class Test01{
public static void main(String[] args){
//++a:先自增1,再使用
int a = 10;
System.out.println(++a);//11
System.out.println(a);//11
//b++: 先使用,再自增1
int b = 10;
System.out.println(b++);//10
System.out.println(b);//11
}
}
" - - ":在自身的基础上减1。
" - - x":先自减1,再使用;"x - - ":先使用,再自减1 。
public class Test01{
public static void main(String[] args){
//--c:先自减1,再使用
int c = 10;
System.out.println(--c);//9
System.out.println(c);//9
//d--:先使用,再自减1
int d = 10;
System.out.println(d--);//10
System.out.println(d);//9
}
}
二、特殊例题
特例1:
1.两个byte类型做运算,会向上转型成int类型再做运算。
public class Test01{
public static void main(String[] args){
byte b1 = 10;
byte b2 = 5;
//b1 - byte : 0000,1010
// int : 0000,0000,0000,0000,0000,0000,0000,1010
//b2 - byte : 0000,0101
// int : 0000,0000,0000,0000,0000,0000,0000,0101
//运算结果int:0000,0000,0000,0000,0000,0000,0000,1111
//强转为byte: 0000,1111
byte result = (byte)(b1 + b2);
System.out.println(result);
}
}
特例2:
2.两个short类型做运算,会向上转型成int类型再做运算。
public class Test01{
public static void main(String[] args){
short s1 = 10;
short s2 = 5;
//s1 - short : 0000,0000,0000,1010
// int : 0000,0000,0000,0000,0000,0000,0000,1010
//s2 - short : 0000,0000,0000,0101
// int : 0000,0000,0000,0000,0000,0000,0000,0101
//运算结果int : 0000,0000,0000,0000,0000,0000,0000,1111
//强转为short : 0000,0000,0000,1111
short result = (short)(s1 + s2);
System.out.println(result);
}
}
特例3:
3.除了byte和short类型做运算时会向上转型成int外,其余的数值型都会按照取值范围大的类型先转型再做运算。
public class Test01{
public static void mian(String[] args){
byte b = 10;
short s = 10;
int i = 10;
long l = 10;
float f = 10.1f;
double d = 10.1;
System.out.println(b + s);//int类型的结果
System.out.println(b + i);//int类型的结果
System.out.println(s + i);//int类型的结果
System.out.println(i + l);//long类型的结果
System.out.println(l + f);//float类型的结果
System.out.println(f + d);//double类型的结果
}
}
特例4:
4.浮点类型做运算符底层会对阶,可能导致失去精度。(对于敏感信息(金额)不要使用浮点类型直接做运算)
public class Test01{
public static void main(String[] args){
double d1 = 0.5;
double d2 = 0.4;
System.out.println(d1 - d2);//0.099999999999998
}
}
特例5:
- char类型可以做运算,先获取字符的ASCII,再做运算
public class Test01{
public static void main(String[] args){
char c = 'a';//ASCII - 97
System.out.println(c + 1);//98
}
}
特例6:
6.++num1; 和 num2++; 没有区别,因为;表示执行语句的结束,不管先加还是后加都给我加。
public class Test01{
public static void mian(String[] args){
int num1 = 10;
++num1;
System.out.println(num1);//11
int num2 = 10;
num2++;
System.out.println(num2);//11
}
}