public class Varible
{
public static void main(String[] args)
{
int a = 1;
int b = 2;
int c = a + b;
int d = a - b;
int e = a * b;
System.out.println(c);
System.out.println(d);
System.out.println(e);
int f = b/a;
int g = a/b;
System.out.println(f);
System.out.println(g);
}
}
执行结果:上面代码中输出的g由于a和b的类型为int型,运算结果也为整型,所以最后结果类型为int型,结果为0。
D:\src>java Varible
3
-1
2
2
0
1. 当有若干个变量参与运算时,结果类型取决于这些变量中表示范围最大的那个变量类型。比如,参与运算的变量中,有整型int,有双精度浮点型double,有短整型short,那么最后的结果类型就是double。
double a = 1;
int b = 2;
int c = a/b;
System.out.println(c);
上面代码执行结果错误:
D:\src>javac Varible.java
Varible.java:7: 错误: 可能损失精度
int c = a/b;
^
需要: int
找到: double
1 个错误
原因是a是double类型,b是int类型,a与b运算结果取表示范围最大的double类型,但是赋值给c,c为int类型故程序出现错误。
以上代码做如下修改则可以执行
double a = 1;
int b = 2;
double c = a/b;
System.out.println(c);
输出结果为:
D:\src>java Varible
0.5
再修改以上代码:
int a = 1;
int b = 2;
double c = a/b;
System.out.println(c);
输出结果为:
D:\src>java Varible
0.0
继续修改以上代码:
int a = 1;
int b = 2;
double c = (double)a/b;
System.out.println(c);
输出结果为:
D:\src>java Varible
0.5
上面的代码中,a与b都是整型,但是通过(double)a这种转换将a转换为一个匿名的变量,该变量的类型是double,但是要注意:a本身依旧是int类型,而不是double类型,这样,(double)a/b就是double类型除以int类型,结果自然是double类型。
3. 取模运算符:使用%表示。
int a = 5;
int b = 3;
int c = a%b;
System.out.println(c);
输出结果为:D:\src>java Varible
2
上面代码的运行结果是2,因为5除以3结果是1余2。
4. 取模的规律:取模的结果符号永远与被除数的符号相同
int a = 5;
int b = -3;
int c = a%b;
System.out.println(c);
输出结果:D:\src>java Varible
2
被除数是5,那么取模的结果是2
int a = -5;
int b = 3;
int c = a%b;
System.out.println(c);
输出结果:
D:\src>java Varible
-2
被除数是-5,那么取模的结果是-2。