Java学习-day03 summary

 

运算符:

1、算术运算符:

+-*/即加、减、乘、除;

注意:

1+-不仅可以用于进行算术运算,也可以用于放在数字前面表示数字的正负号;

2+还可以用于字符串的连接。

 

2、自增自减运算符(++--

++--在前,表示先进行自加1或者自减1,然后再参与赋值运算;

++--在后,表示先进行赋值运算,然后自加1或者自减1

且不论++--在前或者是在后,最终该值都加自加1或者自减1.

如:

Int a=1

Int b=++a;

输出b=2a=2;

Int a=1;

Int b=a++

输出b=1,a=2

使用自增自减运算符时,并不进行类型提升,操作前数值是什么类型,操作后数值仍然是什么类型。

如:

Byte b1=1;

Byte b2=(byte)(b1+1);

Byte b3=++b1;

 

 

注意:

从操作中可以看到,自增自减预算符是比较复杂的,而且有很多需要注意的问题。所以在开发过程中,不是非常必要的时候,尽量不要使用自增自减运算。

 

3、关系运算符

大于(>)、小于(<)、小于等于(<=)、大于等于(>=)、等于(==)、不等于(!=

如:int a=5;

Double d=5.0;

Boolean b=(a==b);

System.out.println(b);

输出结果为:true

注意:说明两个不同类型的数据在进行关系运算时,系统会自动将运算范围低的一样转换成运算范围高的一方。

 

4、位运算符

与(&):如果对应的位都是1,则结果为1,否则结果为0

或(|):如果对应的位都是0,则结果为0,否则结果为1

异或(^):如果对应的位值相同,则为0,否则则为1

非(~):将操作数的每一位都按位取反。

如:

public class Wei

{

         publicstatic void main(String[] args)

         {

                   inta=5;

                   intb=6;

                   intc=a&b;     //执行与位运算

                   System.out.println("c的输出值为:"+c);

                   intc2=a|b;    //执行或位运算

                   System.out.println("c2的输出值为:"+c2);

                   intc3=a^b;    //执行异或运算符

                   System.out.println("c3的输出值为:"+c3);

                   intc4=a^b^b;  //执行双异或运算符

                   /*

   注意:某个数与同一个数据异或两次,最终得到的结果还是该数本身的值。

                   */

                   System.out.println("c4的输出值为:"+c4);

                   intc5=~a;     //执行非位运算符

                   System.out.println("c5的输出值为:"+c5);

 

         }


}

注意:

1、 位运算符都是针对二进制位数值(01)操作,故位运算只能对整数使用;

2、 某个数与同一个数据异或两次,最终得到的数据值还是该数据本身的值

该结论有两种用法:

1、 对文件进行加密操作,只需要将该文件异或一下,自己提供参与异或(^)的数据值,最终需要读原文件的时候只需要再次进行异或(^)一次即可。

2、 如果将两个int型变量数据进行对换的方法:

a、 引入第三方int变量:

如:int a=3;

           Int b=4;

            int c;

            c=a;  //a的值赋值给c

            a=b; //b的值赋值给a

            b=c;  //c的值赋值给b

System.out.println(a);

System.out.println(b);

该输出结果为:

3

b、 使用异或(^:

如:public class Test

{

   public static void main(String[] args)

   {

            int a=3;

            int b=4;

 

            a=a^b;      //定义a的值为a^b

            b=a^b;        //b=a^b=(a^b)^b=a=3

            a=a^b;      //a=a^b=a^(a^b)=b=4

            System.out.println("a的值为:"+a);

            System.out.println("b的值为:"+b);

   }

}

该输出结果为:a4

                     b3

c、  使用a+b的和或者是差

注意:如果ab的数值起初非常大,相加或相减后容易超过int类型的上限值或者下限值,故一般不推荐此方法。

如:

public classTest21

{

public static void main(String[] args)

{

           int a=3;

           int b=4;

           b=b-a;  //定义b=b-a

           a=b+a;  //a定义为a=b+a=(b-a)+a=b=4

           b=a-b;  //b定义为b=a-b=b-(b-a)=a=3

System.out.println("a的输出值为:"+a);

System.out.println("b的输出值为:"+b);

}

}

该输出结果为:a4

       b3

 

 

5、移位运算符

左移(<<)、右移(>>)、无符号右移(>>>)都是针对数据的二进制位进行操作。

左移(<<):将数据换算成二进制位,然后往左移动,右边的空位用0来补。

右移(>>):将数据换算成二进制位,然后往右移动,如果数据移动前首位为1(即为负数),则移动后右边的空位用1来补位,如果数据移动钱首位为0(即为正数),则移动后右边的空位用0-来补位。

无符号右移(>>>:将数据换算成二进制位,然后往右移动,只是填充时,不管原数的是正或者是负,都使用0来填充。

如:

public class Test22

{

         publicstatic void main(String[] args)

         {

                   inta=8;

                   intb=a>>1;  //往右移动1

                   System.out.println("b往右移1位后数值为:"+b);

                   intc=a<<1;  //往左移动1

                   System.out.println("c往左移1位后数值为:"+c);

                   intd=a>>>2;  //无符号往右移动2

                   System.out.println("d往无符号往右移动1位后数值为:"+d);

        

         }

}

输出结果为:

 

注意:

1、 移位运算符因为是对二进制为进行操作,故该运算符只能对整数运算;

2、 一个整数在往左做左移位运算时,数值会越来越大,在往右移做右移位运算时,数值会越来越小。

3、 左移其实就似乎乘以2的移动的位数次幂;右移时,如果该数为奇数就是(该数-1)后,除以2的移动的位数次幂,如果该数为偶数就是该数除以2的移动的位数次幂。

 

对应练习:

1、 最有效率的方式算出2乘以8等于几?

直接使用2*8其实在计算机底层是该两数二进制位进行相乘得出的结果。

使用移位运算符更高效。

如:

public class Test23

{

public static void main(String[] args)

{

           int a=2;

           int b=a<<3; //将2往左移动3位

           System.out.println("b的输出值为:"+b);

}

}

输出结果为:


2、 对两个整数型变量的值进行互换(不需要引进第三方变量)

 

6.逻辑运算符:

1、非短路逻辑运算符:

与(&)、或(|)、非(!)

如:

public class Test24

{

         publicstatic void main(String[] args)

         {

                   inta=5;

                   intb=3;

                   booleanb1=(a>4)&(b<4);   //执行逻辑与运算符

                   booleanb2=(a<4)|(b>4);          //执行逻辑或运算符

                   booleanb3=!(a>4);                   //执行逻辑非运算符

                   System.out.println("使用与逻辑运算符的结果为:"+b1);

                   System.out.println("使用或逻辑运算符的结果为:"+b2);

                   System.out.println("使用非逻辑运算符的结果为:"+b3);

         }

}


3、 短路逻辑运算符:

双与(&&):当两个操作数都为true时,结果采薇true。要判断两个操作数,但是当得到的第一个操作数为false时,其结果就必定为false,这时候就不会再判断第二个操作数。

如:

public class Test25

{

         publicstatic void main(String[] args)

         {

                   inta=5;

                   booleanb=(a<4)&&(a++<10);  //a=5>4,故该第一个语句执行完为false,故第二个就不会执行了。

                   System.out.println("使用逻辑与运算符的结果为:"+b);

                   System.out.println("a的结果为:"+a);

        

         }

}


 

1、 三元运算符:

格式为:

Expression?statement1statement2

如果expressiontrue的话,则执行statement1语句,如果expressionfalse,则执行statement2

在进行条件语句判断时,可以替换if-else语句。

如:

public class Test26

{

         publicstatic void main(String[] args)

         {

                   inti,k;  //声明一系列int类型值

                   i=5;    

                   k=(i>=0?i:-i);//使用三元运算符进行判断

                   System.out.println("i的绝对值为:"+k);

                   i=-5;  

                   k=(i>=0?-i:i);   //使用三元运算符进行判断

                   System.out.println("i的绝对值为:"+k);

                    

         }

}


 

 

运算符的优先级如下表:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值