day03 - 运算符

 

连接符(+ 让任何的数据都可以与字符串进行并接

Ps : 任何数据与字符串使用连接符连接后都是一个字符串

如果+用于字符串,那么+号就是一个连接符,并不是做加法

 

System.out.println(1+2+3+ "world" +1+2+3);

//3+3+ "world" +1+2+3

//6+"world" +1+2+3

//”6world”+1+2+3

//”6world1”+2+3

...

//”6world123”

计算机每次运算的时候,只能取两个数据运算,从左到右

 

 

%求余

结果的正负号 取决于被除数

System.out.println("结果:"+(10%3));  // 1

System.out.println("结果:"+(10%-3)); // 1    

System.out.println("结果:"+(-10%3)); // -1   

System.out.println("结果:"+(-10%-3)); //  -1

 

 

后自增

         int a = 0;

    a = a++;

     System.out.println("a = "+a);

         //a = 0;

后自增在jvm的运行原理:

 

 

         byte b1 = 1;

         byte b2 = 2;

    //b2 = b1+b2;   //报错 需强制转换

     b2 += b1; // (b2 = b1+b2); 不会报错

     System.out.println("b2 = "+ b2);

 

b2 += b1 在编译的时候 java编译器会进行强制类型转换 不需要手动转换

 

比较运算符

 

Instanceof

比较运算符的结果,都是返回一个布尔值的 true/false

==用于比较两个基本数据类型数据的时候,比较的是两个变量所存储的值是否一致.

==用于比较两个引用类型变量的数据时候,比较的是两个 引用类型变量所记录的内存地址是否一致.

 

两个不同类型的数据的比较: 可以。

byte long char int

 结果取决于大的数据类型

 先把小的转换成大的 再进行比较

 

 但两个不同类型的数据必须是兼容的数据 

 Boolean byte 不可比较

 

逻辑运算符 连接两个布尔表达式

 

&(与)与&&(短路与)区别:

相同点:运算的结果相同

不同点:&& 如果左边假则不会再运算右边的布尔表达式 从而提高了效率

        &  即使左边假 仍会运算右边

双与的效率高于单与?? 不一定 只有左边的表达式为假才高于

 

 

|(或)与||(短路或)区别:

事实上,要表示或,只要左边一为ture 就不用运算右边

||: 左边一为ture 就不会运算右边

 

 

|(或)与^(异或)区别:

“异或”:异 不同—true 、 同—false

“或”:有一个为truetrue

 

 

位运算符:直接操作二进制位

^(异或) &(与) |(或)               

用于Int类型的数据时就是位运算符

用于两个布尔表达式就是逻辑运算符

~(取反)

10&2 // 2

 

 

 

异或的规律  如果一个操作数A连续异或同一个操作数两次 结果还是操作数A

应用:可以对数据加密

 

 

 

取反

 

 

基于位运算的面试题:

  1. 交换两个变量的值,不准出现第三方变量

   (3^5) ==  (5^3)

  2. 取出一个二进制位的指定位数

 

 

 

移位运算符

<< (左移)+ 左移的位数n

规律: 一个操作数进行左移运算的时候, 结果等于操作数乘以2n次方, n就是左移的位数

右边补0

 

>>(右移)

 

一个操作数在进行右移运算的时候,如果该操作数是正数,那么左边空缺位补0

负数左边空缺位则补1

 

规律:一个操作数在做右移运算的时候,实际上就是等于该操作数除以2n次方,n是右移的位数

 

 

 

>>>(无符号右移)

 

无符号右移与右移的区别:

右移:运算的时候,如果操作数是一个正数,那么左边的空缺位使用0补,

      如果操作数是一个负数,那么左边的空缺位使用1补。

无符号右移:不管是正数还是负数都统一使用0补。

 

 

 

 

条件运算符(三目运算符):

 

格式;

布尔表达式?值1:2  ;

 

三元运算符要注意的细节:

使用三元运算符的时候,一定要使用该表达式返回的结果,或者是定义一个变量接收该表达式返回的结果。

 

 

优先级:

 

 

 

 

If-else与条件运算符的选择:

条件运算符的优点:结构简洁

条件运算符的缺点:必须要返回一个结果 不能执行语句

 

 

例如 以上语句会报错

修改:

 

这种情况就最好使用if-else语句

posted @ 2017-01-10 16:54  张叉叉儿  阅读(87)  评论(0)    收藏  举报