java基础语法---运算符

在java编程中,运算符是最基础,也是最需要熟练掌握的。

1. 按照运算符的优先顺序区分

java基础语法---运算符_第1张图片

2.按照运算符的种类进行区分

java基础语法---运算符_第2张图片

3.运算符的运用

    1.算数运算符+,-,*,/,%,算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。

注意:在java中取余(%)运算符和C语言中是有区别的。在C语言中,取余运算符得到的一定是一个整数,

并且取余运算符的两端操作数必须是整数,而在java中两端操作数是数值类型就行,运算结果也可以是小数。

           比如:在C语言中    int a=15,b=6;a=a%b  ///则结果a=3;

                      如果是  float a=15.0,b=6.0;   a=a%b;   ///c编译器就会报错。       

                      在java中    int a=15,b=6;a=a%b  ///则结果a=3;

                      如果是  int a=15;float b=6.1 ;   b=a%b;   ///结果是b=2.8000002。这里是有一个浮点数精度误差。

    2.自增自减运算符++,--。这个运算符是单目运算符,操作数可以放在左边X++,X--,也可以放在右边++X,--X,

但是表示的含义有所不同。

        我的理解是:从结构来上,谁在前,就先使用谁进行运算。

          比如:X++/X--,操作数X在前,就是先使用操作数X进行表达式的运算,使用之后,在对操作数X进行自增自减

                    ++X/--X,运算符在前,就先对X进行自增自减,然后使用X进行表达式的运算。

             1.    int a=5;     

                    int b=a++ + a++ +a++;   

                    System.out.println(a);  //a=8;

                    System.out.println(b);  //b=18;

             2.    int a=5;

                    a=++a + a++;  

                    System.out.println(a);  //a=12;

              3.  int a=0;

                   for(int i=0;i<100;i++)  {

                        a=a++;

                    }

                   System.out.println(a);//结果是a=0;

                   首先 a++ 是一个有返回值的表达式,返回值是a自加前的值,Java 对自加处理的流程是先把a的值(不是引用)

  拷贝到一个临时变量区,然后对a变量加1,接着返回临时变量区的值。实际上就是把等号=右边的部分的运算结果保

  存在临时变量区中,运算中间的部分,对应改变就可以了,然后用临时变量赋值。

     3.按位运算符(&,|,^,~):Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。

位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:

A = 0011 1100
B = 0000 1101
-----------------
A&b = 0000 1100       两个对应位都为1则为1,否则为0。  
A | B = 0011 1101     两个对应位中有一个1则为1,否则为0。
A ^ B = 0011 0001     两个对应位不相同则为1,否则为0。
~A= 1100 0011         把原来的数的补码全部取反。
注意:采用异或的方法,可以实现两个变量的替换,因为a==a^b^b;
                int a=3,b=5;
                    a=a^b;
                    b=a^b;
                    a=a^b;  
(扩展)   可以采用加法的方法,实现两个变量的加法。
                int a=3,b=5;
                    a=a+b;
                    b=a-b;
                    a=a-b;

  4.位移运算符(<<,>>,>>>):

       java中有三种移位运算符;实际上位移运算是转化为int类型进行位移运算的。

                  <<      :     左移运算符,num << 1,相当于num乘以2

                  >>      :     右移运算符,num >> 1,相当于num除以2

                  >>>    :     无符号右移,忽略符号位,空位都以0补齐,所以负数可能变成正数。

      注意:当位移的位数是int类型的整数倍时,变量的值不变。

  5.&和&&,|和||的区别。

       单&和双&&(我习惯这样叫)都可以用作为逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果

都是true时,整个运算结果才是true,否则,只要有一方为false,则结果为false。

       双&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式的,例子,对于if(!str=null&&!str.equals(""))表达式,当str为null时,后面的表达式不会执行,所以不会出现nullpointerexception,如果&&改

&,则会抛出nullpointerexception异常。

 

 

 

 

 

你可能感兴趣的:(java知识点)