zoukankan      html  css  js  c++  java
  • 基础部分(二)运算符

    1.自增自减

    ++i和i++的区别在于赋值和自增的顺序不同

    public class Demo03 {

        public static void main(String[] args) {

            //++ --   自增,自减  一元运算符

            int a =3;

            int b=a++;  //执行完这行代码后,先给b赋值,再自增

            //a++ ---> a=a+1

            System.out.println(a); // 4

     

            //a=a+1

            int c=++a;  //执行完这行代码前,先自增,再给c赋值

            System.out.println(a);//  5

            System.out.println(b);//  3

            System.out.println(c);//  5

     

            //幂运算 2^3=8 用一些工具类

            double pow =Math.pow(2,3);

            System.out.println(pow);

        }

    }

     

    2.位运算

    public class Demo05 {

        public static void main(String[] args) {

            /*

            A=0011 1100

            B=0000 1101

     

            A&B=0000 1100

            A|B=0011 1101

            A^B=0011 0001 (异或,不同为1)

            ~B =1111 0010

     

            2*8=16 2*2*2*2

            <<  *2   (左移代表乘2)

            >>  /2   (右移代表除2)

            */

            System.out.println(2<<3);

        }

    }

     

    3.扩展运算

    public class Demo06 {

     

        public static void main(String[] args) {

            int a=10;

            int b=20;

            a+=b;//a=a+b

            a-=b;//a=a-b

            System.out.println(a); // 10

            /*字符串连接符 + 两边出现String类型,则会把两边都变为String类型进行连接*/

            System.out.println(""+a+b); //1020

            System.out.println(a+b+""); //30

     

            //三元运算符  ?:

            //x ? y : z

            //如果x==true,z则结果为y,否则为z

            int score=50;

            String type =score<60?"不及格":"及格"; //必须掌握,类似if

            System.out.println(type);//不及格

        }

    }

    4.运算符的优先级

    所有的数学运算都认为是从左向右运算的,Java 语言中大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的,也就是从右向左运算。

    Java 语言中运算符的优先级共分为 14 级,其中 1 级最高,14 级最低。在同一个表达式中运算符优先级高的先执行。表 1 列出了所有的运算符的优先级以及结合性。

    表1 运算符的优先级

    优先级

    运算符

    结合性

    1

    ()、[]、{}

    从左向右

    2

    !、+、-、~、++、--

    从右向左

    3

    *、/、%

    从左向右

    4

    +、-

    从左向右

    5

    «、»、>>>

    从左向右

    6

    <、<=、>、>=、instanceof

    从左向右

    7

    ==、!=

    从左向右

    8

    &

    从左向右

    9

    ^

    从左向右

    10

    |

    从左向右

    11

    &&

    从左向右

    12

    ||

    从左向右

    13

    ?:

    从右向左

    14

    =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>=

    从右向左


    使用优先级为 1 的小括号可以改变其他运算符的优先级,即如果需要将具有较低优先级的运算符先运算,则可以使用小括号将该运算符和操作符括起来。例如下面的表达式:

    (x-y)*z/5

    在这个表达式中先进行括号内的减法运算,再将结果与 z 相乘,最后将积除以 5 得出结果。整个表达式的顺序按照从左向右执行,比较容易理解。

    再来看一个复杂的表达式,如下所示。

    --y || ++x && ++z;

    这个表达式中包含了算术运算符和逻辑运算符。根据表 1 中列出的优先级,可以确定它的执行顺序如下:
    ① 先计算 y 的自减运算符,即 --y。
    ② 再计算 x 的自增运算符,即 ++x。
    ③ 接着计算 z 的自增运算符,即 ++z。
    ④ 由于逻辑与比逻辑或的优先级高,这里将 ② 和 ③ 的结果进行逻辑与运算,即 ++x && ++z。
    ⑤ 最后将 ④ 的结果与 ① 进行逻辑或运算,即 --y||++x&&++z。

    如果没有上述对该表达式执行顺序的说明,第一眼看到它时将很难识别优先级。对于这类问题,可以通过添加小括号使表达的顺序更加清晰,而不用去查优先级表。如下所示为改进后的表达式。

    (--y)||((++x)&&(++z));

    技巧:记住这么多运算符的优先级是比较困难的,因此读者应该在实际应用中多多练习。

  • 相关阅读:
    关于enum ,调用webservice,用户控件与主页面之间的交互,datsource属性,net面试题,反射类生成sql语句,URl重写一个小实例
    一个很简单的图片上传后立即显示在页面的控件(c#)
    委托之实现异步调用
    跟我学Linq
    w3c关于sql sever的基础操作
    join操作基础
    表操作基础
    javascript理论篇(详情见地址)
    android universal-image-loader的使用
    json相关类库,java对象与json相互转换
  • 原文地址:https://www.cnblogs.com/alljust4u/p/13200386.html
Copyright © 2011-2022 走看看