• 运算符


    运算符这一块基本上所有语言都是差不多的,我们来聊一聊Java的运算符

    Java语言支持的运算符如下:

    1、二元运算符

      顾名思义,两个元素使用的运算符,这里大家应该是都比较熟悉的:

     1 public static void main(String[] args) {
     2         //二元运算符
     3         int a = 10;
     4         int b = 20;
     5         int c = 25;
     6         int d = 30;
     7 
     8         System.out.println(a + b);
     9         System.out.println(a - b);
    10         System.out.println(a * b);
    11         System.out.println(a / (double)b);
    12     }

    下面我们来说一些注意点

      整数运算:

        如果两个操作数有一个为Long, 则结果也为long 没有long时,结果为int。

        即使操作数全为shot,byte,结果也是int.

     1 public static void main(String[] args) {
     2         long a = 123121241151211L;
     3         int b = 123;
     4         short c = 10;
     5         byte d = 8;
     6 
     7         System.out.println(a + b + c + d);//long
     8         System.out.println(b + c + d);//int
     9         System.out.println(c + d);//int
    10     }

      浮点运算:

        如果两个操作数有一个为double, 则结果为double.

        只有两个操作数都是float, 则结果才为float.

    1 public static void main(String[] args) {
    2     float a = 3.14565F;
    3     double b = 3.194546464;
    4     float c = 1.3123123F;
    5     System.out.println(a+b); //double类型
    6     System.out.println(b+c); //double类型
    7     System.out.println(a+c); //float类型
    8 }

      关系运算符:

        这里返回的都是一些布尔值:

    2、取模运算:

      其实就是取余:5 % 3 余2

      其操作数可以为浮点数,一般使用整数。如:5.9%3.9=2.000000004

      要点:

        负数%负数=负数;

        负数%正数=负数;

        正数%负数=正数;

    1 public static void main(String[] args) {
    2     System.out.println(9 % 4); //1
    3     System.out.println(-9 % -4); //-1
    4     System.out.println(-10 % 4); //-2
    5     System.out.println(9 % -4); //1
    6 }

    3、一元运算符

      自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算, 而自增自减运算符是一个操作数,分为前缀和后缀两种。

    1 public static void main(String[] args) {
    2     int a = 3;
    3     int b = a++; //执行完后,b=3。先给b赋值,再自增。
    4     int c = ++a; //执行完后,c=5。先自增,再给b赋值
    5 }

      注意:java中的乘幂处理

    1 public static void main(String[] args) {
    2     int a = 3^2; //java中不能这么处理, ^是异或符号。
    3     double b = Math.pow(3, 2);
    4 }

    Math类提供了很多科学和工程计算需要的方法和常数。特殊的运算都需要运用到方法(后面会写一篇和大家一起聊一聊的)

    4、逻辑运算符

    逻辑与:&&和&,逻辑或:||和|,逻辑非:!。

    逻辑与和逻辑或采用短路的方式。从左到右计算,如果确定值则不会再计算下去。在两个操作数都为 true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断 第二个操作了。 逻辑与只要有一个为false, 则直接返回false. 逻辑或只要有一个为true, 则直接返回true;

    5、位运算符

    Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型 (byte)等类型。位运算符作用在所有的位上,并且按位运算。

    1 A = 0011 1100
    2 B = 0000 1101
    3 -----------------
    4 A&b = 0000 1100
    5 A | B = 0011 1101
    6 A ^ B = 0011 0001
    7 ~A= 1100 0011

    右移一位相当于除2取商。

    左移一位相当于乘2。

    【常见面试题:int a=2*8怎样运算效率最快?】

    1 public static void main(String[] args) {
    2     System.out.println(2 << 3);
    3 }

    用移位运算 int a=2<<3;

    a就是2乘以8 最后结果是16 这是最省内存 最有效率的方法 这个方法确实高效率的。

    解释一下:

      2的二进制是10 在32位存储器里面是0000 0000 0000 0010

      左移三位后变成 0000 0000 0001 0000 也就是16

    再解释一下,在系统中运算是以二进制的形式进行的。相比来说俩个二进制数相乘运算比移位运算慢一 些。 位操作是程序设计中对位模式按位或二进制数的一元和二元操作。 在许多古老的微处理器上, 位运算比 加减运算略快, 通常位运算比乘除法运算要快很多。 在现代架构中, 情况并非如此:位运算的运算速度 通常与加法运算相同(仍然快于乘法运算). 详细的需要了解计算机的组成原理!

    6、拓展运算符:

    会用就行,多用用就会用

    7、字符串连接符

    “+” 运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串 然后再进行连接。

    1 //字符串
    2 String s1="Hello 中文!";
    3 String s2=1+""; //转换成String
    4 //int
    5 int c = 12;
    6 System.out.println("c=" + c);

    8、三目条件运算符

    三目条件运算符,语法格式:

    1 x ? y : z
    2 x:表达式    得到一个Boolean值,true就用y,false就用z

    演示:

    public static void main(String[] args) {
        int score = 80;
        String type = score < 60 ? "不及格" : "及格";
        System.out.println("type= " + type);
    }

    9、运算符优先级

    从高到低:

  • 相关阅读:
    字符串与Unicode码的相互转换
    关于es6中的yield
    ajax请求中的6个全局事件
    用H5上传文件
    类型化数组
    git笔记-9-29
    js正则表达式验证身份证号和密码
    assertThat用法
    java产生随机数的几种方式
    jQuery之Deferred对象详解
  • 原文地址:https://www.cnblogs.com/koss/p/14436066.html
Copyright © 2020-2023  润新知