Java运算符

运算符:

      常见的运算符有:

•     算术运算符

•     赋值运算符

•     比较运算符(关系运算符)

•     逻辑运算符

•     位运算符

•     三元运算符

   Java运算符_第1张图片

算术运算符的注意问题

如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论。

对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。

例如:int x=3510;x=x/1000*1000;  x的结果是?

“+”除字符串相加功能外,还能把非字符串转换成字符串,

赋值运算符

•     符号:=

•     扩展赋值运算符: +=, -=, *=, /=, %=

 

比较运算符:

Java运算符_第2张图片

l  注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false

l  注2:比较运算符“==”不能误写成“=” 

逻辑运算符:

Java运算符_第3张图片

l  逻辑运算符用于连接布尔型表达式,在Java中不可以写成3,应该写成x>3 &x<6 

l  “&”“&&”的区别:

•   单&时,左边无论真假,右边都进行运算;

•   双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

      “|”“||”的区别同理,双或时,左边为真,右边不参与运算。

l  异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false

 

位运算符:

Java运算符_第4张图片

•     位运算是直接对二进制进行运算

Java运算符_第5张图片

三元运算符:

l  格式

•   (条件表达式)?表达式1:表达式2

•   如果条件为true,运算后的结果是表达式1

•   如果条件为false,运算后的结果是表达式2

l  示例:

•   获取两个数中大数。

•   int x=3,y=4,z;

•   z =(x>y)?x:y;//z变量存储的就是两个数的大数。

下面是代码示例和注释:

public class Test

{

      publicstatic void main(String[] args)

      {

           //取模

           int r= 10 % 3;

           System.out.println(r);

 

           //自增

           int i= 10;

 

           //i++;先取 i 值,再运算(i = i + 1)

           int j= i++;

           System.out.println(j+","+i);

           j = i;

           System.out.println(j+","+i);

          

           int m= 100;

           //++m;先运算(m = m + 1),后取值

           int n= ++m;

           System.out.println(n);

 

           //+: 字符串相加

           Stringstr = "abc";

           Stringstr2 = "def";

           Stringstr3 = str + str2;//abcdef

           System.out.println(str3);

 

           //如果对负数取模,可以把模数的负号忽略不计

           System.out.println(10% -3);//结果还是1

           //如果被模数是负数,则先对其绝对值进行取模运算,再在结果前加一个负号

           System.out.println(-10% 3);//结果是-1

 

           System.out.println(-10% -3);//结果也是-1

          

           //整数之间做除法时,只保留整数部分而舍弃小数部分

           int x= 3510;

           x = x/ 1000 * 1000;

           System.out.println(x);//结果为3000

 

           // + 除字符串相加功能外,还能把非字符串转换成字符串

           Stringstr4 = "1";

           System.out.println(str4+ 100);//结果为1100

 

           //扩展赋值运算符: +=, -=, *=, /=, %=

           //inty = x + 1000;

           x +=1000;//x = x + 1000;

           System.out.println(x);//结果为4000

 

           System.out.println(x>= 1000);//结果为true

 

           //逻辑运算符

           int a= 10;

           int b= 20;

 

           //& 与运算符,当且仅当两边都为真时,表达式的结果才为true

           System.out.println(a> 5 & b < 30);//结果为true

           System.out.println(a> 15 & b < 30);//结果为false

           System.out.println(a> 5 & b < 19);//结果为false

 

           // | 或运算符,当且仅当两边都为假时,表达式的结果为 false,此外结果都为true

           System.out.println(a> 5 | b < 30);//结果为true

           System.out.println(a> 15 | b < 3);//结果为false

           System.out.println(a> 5 | b < 19);//结果为true

 

           // ^ 异或运算符,当且仅当两边的表达式的结果不同时为true,两边结果相同则为false

           System.out.println(a> 5 ^ b < 30);//结果为false

           System.out.println(a> 15 ^ b < 30);//结果为true

           System.out.println(a> 5 ^ b < 19);//结果为true

 

           // ! 非运算符

           System.out.println(!(a> 5));//结果为false

 

           //&& 短路与 || 短路或短路逻辑运算符若短路逻辑运算符前的表达式已经可以确定整个表达式的值

           //则不再判断短路运算符后面的表达式

           System.out.println(a> 15 && (10 / 0 == 1));

 

           //位运算符

           int c= 3;//0000 0011

          

           //左移运算符

           System.out.println(c<< 2);//0000 1100 结果为12 3*(22次幂)

 

           //右移运算符

           System.out.println(c>> 2);//0000 0000 结果为0 3/(22次幂)

          

           //无符号右移运算符

           int d= -1;

           System.out.println(d>> 1);//结果为-1

           System.out.println(d>>> 1);//2147483647

 

           //& 位运算符

           /*

            *  00000010

            & 0000 0011

            * ---------

            *  00000010

           */

           System.out.println(2& 3);//结果为2

 

           //三元运算符

           Stringe = d > 3 ? "d > 3" : "d <= 3";

           System.out.println(e);//结果为 d <= 3

 

           e = d> 3 ? "大于" : "不大于";

           System.out.println(e);

 

           //以下不能通过编译,因为两边必须是表达式,且必须是类型兼容的表达式

           //d> 3 ? System.out.println("a"); :System.out.println("b");

 

      }

}

 

你可能感兴趣的:(JAVA)