zoukankan      html  css  js  c++  java
  • java运算符

    java运算符

    算术运算符:+,-,*,/,%,++, --

    赋值运算符:=

    关系运算符:>,<,>=,<=,==,!=instanceof

    逻辑运算符:&&,||,!

    位运算符:&,|,^,~,>>,<<,>>>

    条件运算符:关系表达式? 表达式1 : 表达式2

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

    基本运算

    在JAVA中,基本类型(除了boolean外)可以自动转换的,转换形式为:byte,short,char – int --long–float–double这就是自动转换的顺序了,其中byte,short,char在运算时是自动转换为int型的,而int与long运算时自动转换为long型。从上可知,float与double运算时是自动转换为double再进行计算的,int与float运算时先转换为float再运算。也就是说,表述范围小的可以自动转换为表述范围大的,(表述范围不是指类型的大小)其次,如果你要得到某一类型的数值时,也可以通过强制转换来实现。

    int a = 10;
    int b = 20;
    
    //复制当前行到下一行:ctrl+alt+下
    System.out.println(a+b);
    System.out.println(a-b);
    System.out.println(a*b);
    System.out.println((double)a/b);
    System.out.println(a%b);
    
    结果:
    30
    -10
    200
    0.5
    10
    

    不同类型之间的运算

    long c = 201212131212L;
    int d = 20;
    short e = 2;
    byte f = 8;
    double g = 12;
    float h = 3.0f;
    //如果计算中有Long那么计算结果位Long
    //如果计算中有double那么计算结果位double
    //如果计算中有float那么计算结果位float
    //其他结果都为int
    System.out.println(c+d+e+f);//Long
    System.out.println(d+e+f);//int
    System.out.println(e+f);//int
    System.out.println(f+g);//double
    System.out.println(d+h);//float
    
    结果:
    201212131242
    30
    10
    20.0
    23.0
    

    image-20210126181122591

    注意:

    基本类型与String
    基本类型与String之间的运算,会转换成String类型,
    注意多个数进行运算时:
    System.out.println(1+2+“3”+4);
    输出为334,
    因为前两个为int类型,相加为int类型,然后再与String类型相加,变成String类型,然后再与4相加还是String类型

    System.out.println(1+“2”+3+4);
    输出为1234;
    同理,1与“2”相加变成了String,之后的运算都是String类型

    转载自https://blog.csdn.net/shenzixincaiji/article/details/82735390

    自增自减运算符

    int a = 3;
    int b = a++;//执行完这行代码后,先给b赋值,再自增
    //a++ a = a + 1;
    System.out.println(a);
    // a = a + 1;c
    int c = ++a;//执行完这行代码前,先自增,再给赋值
    System.out.println(a);
    System.out.println(b);
    System.out.println(c);
    
    结果:
    4
    5
    3
    5
    

    幂运算

    double pow =Math.pow(3,2);
    System.out.println(pow);
    

    逻辑运算符

    与(and)、或(or)、非(!)

    //逻辑运算
    boolean a = true;
    boolean b = false;
    System.out.println(a && b);//都为真,才为真
    System.out.println(a || b);//有一个真,则为真
    System.out.println(!(a && b));//真变为假,假变为真
    
    //短路运算
    int c = 5;
    boolean d = (c<4)&&(c++<4);
    System.out.println(c);
    System.out.println(d);
    
    结果:
    false
    true
    true
    5
    false
    

    位运算符

    /*
     A = 0011 1100
     B = 0000 1101
    
     A&B = 0000 1100 A和B中的数字对应位上,如果都为0,则为0;如果都为1,则为1;如果其中一个为0,则为0;(都为1才为1,其他都是0)
     A|B = 0011 1101 A和B中的数字对应位上,如果都为0,则为0;如果都为1,则为0;如果其中一个为1,则为1;(都为0才为0,其他都是1)
     A^B = 0011 0001 A和B中的数字对应位上,如果都为0,则为0;如果都为1,则为0;如果其中一个为1,另一个为0,则为1;(相同为0,不相同为1)
      ~B = 1111 0010 对应位取反
    */
    
    /*
     << 左移  *2(左移几就乘多少个2)
     >> 右移  /2(右移几就除多少个2)
    
     0000 0000  0
     0000 0001  1
     0000 0010  2
     0000 0011  3
     0000 0100  4
     0000 1000  8
     0001 0000  16
    */
    
    System.out.println(2<<3);
    结果:
    2*2*2*2=16
    

    三元运算符

    //三元运算符
    //x ? y : z  如果x == true,则结果为y,否则结果为z
    
    int score = 50;
    String type = score < 60 ?"不及格":"及格";
    System.out.println(type);
    
    结果:
    不及格
    

    扩展赋值运算符

    int a = 10;
    int b = 20;
      a+=b;//a = a + b
    //a-=b   a = a - b
    //a*=b   a = a * b
    //a/=b   a = a / b
    System.out.println(a);
    
    结果:
    30
    

    运算符优先级

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

    乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响结果。运算符有不同的优先级,所谓优先级就是在表达式运算中的运算顺序。

    一般而言,单目运算符优先级较高,赋值运算符优先级较低。算术运算符优先级较高,关系和逻辑运算符优先级较低。多数运算符具有左结合性,单目运算符、三目运算符、赋值运算符具有右结合性。

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

    ​ 表1 运算符的优先级

    优先级 运算符 结合性
    1 ()、[]、{} 从左向右
    2 !、+、-、~、++、-- 从右向左
    3 *、/、% 从左向右
    4 +、- 从左向右
    5 «、»、>>> 从左向右
    6 <、<=、>、>=、instanceof 从左向右
    7 ==、!= 从左向右
    & 从左向右
    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。

    转载自http://c.biancheng.net/view/794.html

  • 相关阅读:
    人在年轻的时候,最需要的能力--吃药的能力
    查分单词-Python
    关于NLP算法工程师的几点思考
    找出只出现一次的数字-Python
    最长连续序列
    二叉树中的最大路径和-Python
    windows:查找端口所对应的进程
    vue项目路由模式为history时打包后部署在nginx 配置访问
    用navicat连接数据库报错:1130-host ... is not allowed to connect to this MySql server如何处理
    mysql误删root用户
  • 原文地址:https://www.cnblogs.com/LZC1402548603/p/14336913.html
Copyright © 2011-2022 走看看