zoukankan      html  css  js  c++  java
  • java操作符

    java操作符

    关于java操作符的一些东西,由于技术有限,如有错误还请指出,不胜感激。

    欢迎转载,转载烦请注明出处,谢谢。

    https://www.cnblogs.com/sx-wuyj/p/11177257.html

    “+、-、*、/”四则运算都是从小学就开始学起的,在java当中同样有这四种简单的运算符含义是和数学当中一样的,这几种运算符除了"+"还可以操作String类型,其他的只能操作基本类型的数据。另外需要特别注意的就是"="、"=="、"!="这些。

    • "=" : 在java语言当中,“=”是赋值的含义。将左边的值赋给右边;比如 int a = 2; 就是讲int类型的2赋值给a。

    • "" :""是比较运算符,一定要注意的是,"=="是比较左右两边的值是否相等,如果相等返回true,不等返回false。比如

      int a = 2;
      int b = 3;
      System.out.println(a == b);
      

      以上代码最终输出的是false。也就是不等。还有一种情况是以下情况:

       String a = "2";
       String b = "2";
       System.out.println( a == b);
      

      那么可以想一下以上代码,输出结果是什么呢?输的结果是false,因为String是引用类型,使用"=="比较的是他们两个对象在内存中的地址值,因为是两个对象,地址值肯定不一样的。再看另一种情况:

       String a = "2";
       String b = a;
       System.out.println( a == b);
      

      如上代码,输出为true,为什么呢?因为在第二行 b = a;中并没有创建新的对象,只不过是将a在内存中的地址值赋给了b,所以比较的是同一个地址值,那么肯定就为true。这里可能会有人误解一点就是将 2 赋值给了b,这里并不是这样了,赋的值是a的地址值,也就是引用。

      1. 优先级

        借用书中的代码:

        int x = 1;
        int y = 2;
        int z = 3;
        int a = x + y - 2 / 2 + z;
        int b = x + (y - 2) / (2 + z);
        System.out.println("a = " + a + "b=" + b);
        

        输出结果为: a = 5 b = 1
        以上代码只是括号的区别,其他都一样,但是运算结果完全不同,由此可以看出在java中括号优先级大于乘除,乘除大于加减,其次从左至右依次运算。最终将计算结果赋值与左边的变量。
        还有一点需要说明在输出语句中"+"也出现了,在这种上下文环境中,"+"意味着连接符,不做运算,起拼接作用,当编译器遇到String后面跟着一个"+"后,而之后有跟着一个非String类型的元素时,就会尝试将这个元素转为String类型。

      2. 算术操作符
        这里主要说一下取模运算:

        • 取模(%) : 取模就是也就是我们数学中的取余,但是java当中使用取模运算符后得到就是余数,不会进行四舍五入,直接舍弃掉整数外的部分。比如 int a = 3 % 2 那么a的值就为1。
        • 还有一个需要注意的就是 a += 4; a = a + 4 除了写法不同其余是完全一样的,其余四则 运算都一样,前者代码可读性比较差,后者更容易让别人看懂。
      3. 逻辑操作符

        • 与、或、非(&、|、!)
          • 与(&): 两边为true才为true,一边为false则为false。
          • 或(|): 其中一边为true或false则为true,两边都为true或false则整体为false。
          • 非(!): 这个就比较好理解了,通常是 != 为不等于,还有另一个就是取反。
            另外需要注意的是,&和&&、|和|| 是不一样的,虽然结果一样,但是会有一个短路的情况,就是一旦可以确定表达式的值,那么之后的表达式就不会执行了。也就是短路。
  • 相关阅读:
    预处理、const、static与sizeof-为什么不把所有的函数都定义成内联函数
    预处理、const、static、sizeof-说明内联函数使用的场合
    预处理、const、static、sizeof-为什么inline能很好地取代表达式形式的预定义
    预处理、const、static与sizeof-为什么要引入内联函数
    预处理、const、static与sizeof-#pragma pack的作用
    预处理、const、static与sizeof-sizeof与strlen有哪些区别
    预处理、const、static与sizeof-static全局变量与普通的全局变量有什么区别
    预处理、const、static与sizeof-static有什么作用(至少说出2个)
    预处理、const、static与sizeof-C++中const有什么作用(至少说出3个)
    预处理、const、static与sizeof-使用const与#define的特点及区别
  • 原文地址:https://www.cnblogs.com/sx-wuyj/p/11177257.html
Copyright © 2011-2022 走看看