运算符的分类定义以及运算法则

运算符的分类定义以及运算法则

运算符的分类定义以及运算法则

一些注意事项:

1.

int i1=12;
int i2=5;
double d1=i1/i2;  //2.0
double d1=i1/i2+0.0;  //2.0
double d1=i1/(i2+0.0);  //2.4
double d1=(double)i1/i2;  //2.4
double d1=(double)(i1/i2);  //2.0

2.取余结果的符号与被除数的符号相同。

3.自增1不会改变变量原本的数据类型。

赋值运算符

运算符的分类定义以及运算法则

 1.拓展赋值运算符不会改变变量原本的数据类型,例如:

short s1=10;
s1=s1+2;  //编译出错
s1+=2;   //s1=12

逻辑运算符

运算符的分类定义以及运算法则

 注意:

1.逻辑与若为假,后面运算可以进行;短路与若为假,后面运算不能进行。

boolean b1=false;
int i1=10;
if(b1&(i1++>0)){
  System.outprintln("正确");
else{
  System.out.println("错误");
}
}
System.out.println("i1="+i1);
/*输出:错误
         11*/


boolean b2=false;
int i2=10;
if(b2&&(i2++>0)){
  System.outprintln("正确");
else{
  System.out.println("错误");
}
}
System.out.println("i2="+i2);
/*输出:错误
         10*/

2.逻辑或与短路或的区分

(1)相同点:逻辑或与短路或的运算结果相同,当符号左边是false时,二者都会执行符号右边的运算

(2)不同点:当左边符号时true时,逻辑或|继续执行符号右边的运算,而短路或||不再执行符号右边的运算。

(3)开发中优先使用短路或&&

boolean b3=true;
int i3=10;
if(b3|(i3++>0)){
  System.outprintln("正确");
else{
  System.out.println("错误");
}
}
System.out.println("i3="+i3);
/*输出:正确
         11*/


boolean b4=true;
int i4=10;
if(b4&&(i4++>0)){
  System.outprintln("正确");
else{
  System.out.println("错误");
}
}
System.out.println("i4="+i4);
/*输出:正确
         10*/

记忆窍门:如果能通过前半部分判断出来结果了,短路操作就不用进行后半部分的操作了

位运算符

运算符的分类定义以及运算法则

规律:

1.每左移一位,乘2,左移两位,乘4。

public static void main(String[] args){
  int=21;
  System.out.println("i<<2:"+(i<<2));  //84
}

2.每右移一位,除以2,最高位是0,右移后,空缺位拿0补。若最高位是1,空缺未补1。

3..无符号右移,都拿0来补

4.位运算符操作的都是整型的数据。

5.位运算符与或非都是对二进制的位数来进行操作的。

int m=12;
int n=5;
System.out.println("m&n:"+(m&n));  //m&n:4
System.out.println("m|n:"+(m|n));  //m|n:13
System.out.println("m^n:"+(m^n));  //m^n:9

运算符的分类定义以及运算法则

6.m=k^n=(m^n)^n,两个亦或运算^过后会变回原样。

7.取反:二进制每位取反运算符的分类定义以及运算法则

三元运算符

运算符的分类定义以及运算法则

clsss SanYuanTest{
   public static void main(String[] args){
   int m=12;
   int n=5;
   int max=(m>n)?m:n;
   System.out.println(max);
   }
}
//12

 结论:

1.凡是可以使用三元运算符的地方,都可以改写为if-else,反过来不行。

2.若程序既可以选择三元运算符,也可以选择if-else结构,优先选择三元运算符,原因为简洁,运行效率高。

上一篇:ORM增删改查


下一篇:java整数缓冲区