当有若干个变量参与运算时,结果类型取决于这些变量中表示范围最大的那个变量类型。比如参与运算的变量中有整型,有双精度浮点型,有短整型,那么最后的结果类型就是double。

 
int a=1;
int b=2;
double c=(double)a/b;
 
上面的代码中,a和b都是整型的,但是通过(double)a这种转换将a转换成一个匿名的变量,该变量的类型是double。但是要注意:a本身依旧是int类型,而不是double类型,这样,(double)a/b就是double类型除以int类型,结果自然是double类型。
 
取模运算符:%;其实就是个求余数的问题啦!
 
取模的结果符号永远与被除数的符号相同。这个规则是很重要的。
 
例如:int a=5;
int b=-3;
int c=a%b;
则输出的c的值就是2;
 
而如果int a=-5;
则上例中输出的c的值就是-2;
 
关系运算符:大于(>)、 小于(<)、等于(==)、不等于(!=)、大于等于(>=)、小于等于(<=);关系运算的结果都是boolean值。
 
逻辑运算符:重点讲解两个,逻辑运算符本身也返回一个boolean值。
  逻辑与:使用&&表示,逻辑与是一个双目运算符(即有两个操作数的运算符);逻辑与只有当两个操作数都为true的时候,结果才为真,其余情况结果均为假。逻辑与表示的是并且的意思。
  逻辑或:使用||表示,逻辑或也是一个双目的运算符,逻辑或只有当两个操作数都是false的时候,结果才是false,其余情况结果都是真的。逻辑或表示的是或者的意思,一种选择的意思。
 
关于逻辑运算符的短路特性(这个很重要!)
1.逻辑与:如果第一个操作数为false,那么结果肯定为false,所以将不会执行逻辑与后面的运算了,即发生了短路;
2、逻辑或:如果第一个操作数为true,那么结果肯定为true,所以将不会执行逻辑或后面的运算了,也就是随之发生了短路。
 
例如分析下面的代码:
public class Operator2
{
public static void main(String[] args)
{
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int f = 5;
 
boolean e =(a>b)&&((f=c)<d);
 
System.out.println(e);
System.out.println(f);
}
}
当我们判断a>b为false时,那么&&后面的操作数就不用执行了,所以这个时候e的值就是false了,而f的值还是最开始定义的那个,因为&&后面的没有执行,所以f=c也就没有被执行,这就是发生了短路,这个很重要,也很容易被忽视掉,这个一定要搞得很清楚才行。
 
关于变量的自增与自减运算:
a++和++a的说法:
int a=3;
int b = a++;
 
这个时候输出的b是3;而a是4;
 
int a=3;
int b = ++a;
这个时候输出的b是4;而a是4;
 
当++在前的时候是先对变量进行自增,然后再将自增之后的值赋给=左边的变量;
而++在后的时候是先把变量的额值赋给左边的变量,然后再将自增进行。
所以区别是在这里的。