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

    内容:自增运算符、右移运算符、逻辑运算符、与或运算符、异或运算符、连接符、练习(奇淫方法解决)

    供有点基础的人查阅

    ####################################

    自增运算符

    x++:表示  x 自增 1

    以下是经常碰到的易混点:

    int a = 6,b;
    b = a++;             //得到的结果是 b=6,a=7

    以上代码相当于

    temp = a; //先将a进行临时存储
    a = a + 1; //然后a自增
    b = temp; //将临时的值赋值给b

    重点在b = a++,这一句,要记住 b 赋的值是 a 未自增之前的值。

    #####################################

    右移运算符:>>   , 无符号右移:>>>

    整型字符存储是有8位,比如 9 ,二进制存储为 0000 1001,通过右移运算符 1 也就是 9 >> 1 后,变成 1000 0100,就是后面的 1 移到了前面

    无符号右移 1 位—9>>>1 :0000 0100

    ########################################

    逻辑运算符: &   &&    |      ||             <   >    ==

    & 和 &&的区别:& 两边都运算是否为真,&& 左边为假,则右边不运算;| 和 || 一样:左边为真,右边则不进行运算,如果左边为假,右边继续运算

    #####################################################

    与或非运算符:  &  |     与上面的逻辑运算符区分一下

    二进制运算

      0010 1011                                                                   0010 1011  

    &0000 0111                                                                 | 0000 0111

    =0000 0011     与运算,两个为1才为1                          0010 1111     或运算,一个为1结果就是1

    ######################################################

    异或运算符:  ^   

    6^3 =  0110 ^ 0011  = 0101 为了减少一点缩写,前面的 4 个 0 我就没有写了。是二进制运算

    值得注意的是:6^3^3 = 6          6^3^6 = 3      练习中会用到这种特性

    #########################################################

    连接符:在输出的时候注意一下

    int a = 3,b = 4;
    System.out.println("5+5="+5+5);  // 5+5=55
    System.out.println("5+5="+(5+5));   // 5+5=10
    System.out.println("a="+a+",b="+b);   // a=3,b=4
    //字符串连接使用简单,就不做讲解

    ####

    赋值运算符,一般不用考虑
    +=;可能发生自动类型转换
    Short s=4;
    s=s+5;   //编译不通过,因为右边是 int型和short型相加,类型不同不可以相加
    s+=5;   //编译通过,这个发生了类型转换,short型自动转成了int型,所以可以相加,如果理解不了,那就记住吧 /滑稽

    ####################################################################################################

    练习

    1、最有效率的方式计算2×8

    2、把两个整数变量的值进行互换(不通过第三个变量)

    System.out.println((2<<3))
    答案 1
    int a = 5,b = 6;
    a = a + b;    //a = 5+6 = 11
    b = a - b;    // b = 11-6 = 5
    a = a - b;    // a = 11-5 = 6
    答案 2.1
    int a = 5,b = 6;
    a = a ^ b;   // a = 5 ^ 6(a^b)
    b = a ^ b;   // b = 5 ^ 6 ^ 6(a^b^b)
    a = a ^ b;   // a = 5 ^ 6 ^ 5     此时的 b 已经经过上一个运算变成了 5 
    答案 2.2

    第二题两个方法使用时注意,不要超出整数范围

    如果有疑问,欢迎在下方评论,我会回复。

  • 相关阅读:
    Siege 3.0 正式版发布,压力测试工具
    Pomm 1.1.2 发布,专为 PG 设计的 ORM 框架
    Whonix 0.5.6 发布,匿名通用操作系统
    国内开源 java cms,Jspxcms 2.0 发布
    EZNamespaceExtensions.Net v2013增加对上下文菜单、缩略图、图标、属性表的支持
    GNU Guile 2.0.9 发布,Scheme 实现
    jdao 1.0.4 发布 轻量级的orm工具包
    OpenSearchServer 1.4 RC4 发布
    Percona Server for MySQL 5.5.3030.2
    Samba 4.0.5 发布
  • 原文地址:https://www.cnblogs.com/-nbloser/p/8548300.html
Copyright © 2011-2022 走看看