java运算符:
  定义:用来指明对于操作数的运算方式
  按照操作数数目分类:
    单目运算    数目运算    三目运算
    a++              a+b           (a>b) ? x:y
  按照运算符功能分类:
    算术运算符:
      +    -    *    /    %(取余/取模)
      ++ 自增
      --  自减
      注:int x = 1; int y = x++ 将x变量空间的内容先取出,然后将常量区的1取出x在像做
           值交换的时候会产生一个临时的副本空间,++(--)在变量前面则先自增后备份,++(--)在
            变量后面则先备份后自增,=号是将备份空间中的值赋值给别人
      例:
        int m =1;
        int n =2;
        int sum = m++ + ++n - n-- - --m +  n-- - --m ;
        System.out.println("m="+m+", n="+n+", sum="+sum);
        m =0 n =1 sum = 2
      赋值运算符:
        = 赋值号
        +=  int x=1 x+=10 ; 相当于 x = x+10   // 11
        -=  int x=10 x-=10 ; 相当于 x = x-10   // 0
        *=  int x=10 x*=10 ; 相当于 x = x*10  // 100
        /=  int x=10 x-=10 ; 相当于 x = x/10   // 1
        %=  int x=10 x%=10 ; 相当于 x = x%10 // 0
        注:
          byte a = 1;
          a +=1; //2
          a = a+1;//编译报错
          a = (byte)(a+2) // 强制转换,通过
              讲解:计算机中+=相当于一个运算符,会先用+符号自动的将byte提升为32bit的int类型
            来进行计算,然后在通过=运算符将32bit位的int类型自动降为8bit的数据来存入a
            中,但是a=a+1中的=和+属于两个运算符,+将byte中的1提升为32bit来个常量池
            中的1进行相加,但是=赋值时在将32bit位的数据赋值到8bit位中的a空间中,会出
            现编译报错
          总结:
            单个运算符后台编译可以自动提升或者降低bit位来满足赋值或者计算,但是赋值
            号之后不能自动降级方程式,需要强制转换
    位运算符:
      &按位与 | 按位或 ^ 按位异或 ~ 按位取反
      <<按位左位移   >>按位右位移   >>>按位又位移(无符号)
        例: 3 & 5 = ?    3 | 5 = ?    3 ^ 5 = ?    ~ 6 = ?
          解:  将3 和 5分别换算成二进制
            3 = 00000000  00000000  00000000  00000011 = 011
            5 = 00000000  00000000  00000000  00000101 = 101
            所以按位&即将011和101进行按位&后在化成10进制(true 为 1 false 为 0)
                  0  1  1
                  1  0  1
                  0  0  1  = 1
            所以按位 | 即将011和101进行按位 | 后在化成10进制(true 为 1 false 为 0)
                  0  1  1
                  1  0  1
                  1  1  1  = 7
            所以按位 ^ 即将011和101进行按位^后在化成10进制(true 为 1 false 为 0)
                  0  1  1
                  1  0  1
                  1  1  0  = 6
            所以按位  即将101进行按位 ~ 后在化成10进制(true 为 1 false 为 0)
            ~6 = -7
            解释:计算机将0划分在正数行列,所以 -1<-->0  -2 <--->1  -3<--->2 故 -7<-->6
            6  (正数三码相同)
            00000000 00000000 00000000 0110  (原码)
            00000000 00000000 00000000 0110  (反码)
            00000000 00000000 00000000 0110  (补码)
            -6  (负数三码不同)
            10000000 00000000 00000000 00000110  (原码)
            11111111 11111111 11111111 11111001  (反码:保持符号不动其余取反)
            11111111 11111111 11111111 11111010  (补码:在反码基础上+1)
            计算机中不管是整数还是负数,存储的形式都是以补码形式来存储
            注:反码是一种表示形式 取反是一个计算过程
          <<按位左位移:
            6<<1=?
              00000110 = 00001100 = 12
              所以往左移相当于*2的位移次幂
            6>>1=?
              00000110 = 00000011 = 3
              所以往左移相当于/2的位移次幂
            负数
            -6 >>>1
              11111111    11111111    11111111    11111010(以补码计算)
              ?1111111    11111111    11111111    11111101
              注: >> 保留符号位1填1
                    >>> 不保留符号 不管是什么都填0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

java运算符详解的更多相关文章

  1. Java面向对象详解

    Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵 ...

  2. Net is as typeof 运行运算符详解 net 自定义泛型那点事

    Net is as typeof 运行运算符详解   概述 在了解运行运算符的前提我们需要了解什么是RTTI ,在任何一门面向对象的语言中,都有RTTI这个概念(即 运行时). RTTI(Run-Ti ...

  3. Java内部类详解

    Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...

  4. 黑马----JAVA迭代器详解

    JAVA迭代器详解 1.Interable.Iterator和ListIterator 1)迭代器生成接口Interable,用于生成一个具体迭代器 public interface Iterable ...

  5. C++调用JAVA方法详解

    C++调用JAVA方法详解          博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...

  6. Java虚拟机详解----JVM常见问题总结

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. [转] Java内部类详解

    作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...

  8. java 乱码详解_jsp中pageEncoding、charset=UTF -8"、request.setCharacterEncoding("UTF-8")

    http://blog.csdn.net/qinysong/article/details/1179480 java 乱码详解__jsp中pageEncoding.charset=UTF -8&quo ...

  9. java 泛型详解(普通泛型、 通配符、 泛型接口)

    java 泛型详解(普通泛型. 通配符. 泛型接口) JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能---- ...

随机推荐

  1. Qualcomm-Atheros-QCA9377-Wifi-Linux驱动

    资源来自:https://download.csdn.net/download/ichdy/10331646 已经下载好了,发现无法使用,本人系统Centos7.2,如果有安装成功,并且可以正常使用的 ...

  2. PHP Windows下使用Memcached扩展

    github上发现了一个很好用的小文件,能够 模拟出php_memcached.dll的PHP memcached扩展. PHP memcached client 已知PCEL有两个memcache ...

  3. Veins(车载通信仿真框架)入门教程(二)——调用第三方库

    Veins(车载通信仿真框架)入门教程(二)——调用第三方库 在借助Veins进行自己的研究时我们经常需要实现一些比较复杂的功能,有时就需要借助第三方库的帮助. 博主的研究需要使用神经网络,但是自己编 ...

  4. Java基础(七)泛型数组列表ArrayList与枚举类Enum

    一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...

  5. 全方面讲解TensorFlow

    任何曾经试图在 Python 中只利用 NumPy 编写神经网络代码的人都知道那是多么麻烦.编写一个简单的一层前馈网络的代码尚且需要 40 多行代码,当增加层数时,编写代码将会更加困难,执行时间也会更 ...

  6. 小白学 Python(16):基础数据类型(函数)(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  7. Linux 命令之 crontab

    crontab 简介 crontab 主要用于需要管理周期执行定时任务的场景 crontab 安装 (有些系统默认已经带了 crontab,无需安装的朋友可以直接跳过本节) 安装: yum insta ...

  8. 面经-科大讯飞AI研究院

    面试时间:2019.06.27 电话面试 面试岗位:计算机视觉算法工程师/一面 面试时长:45分钟 面试内容: 自我介绍 简历中选择一个项目介绍-视频召回 问及项目中的语音.人脸.标题.模态缺失相关细 ...

  9. Python3爬虫(2)_利用urllib.urlopen发送数据获得反馈信息

    一.urlopen的url参数 Agent url不仅可以是一个字符串,例如:https://baike.baidu.com/.url也可以是一个Request对象,这就需要我们先定义一个Reques ...

  10. 学习笔记23_AspMVC项目

    *创建AspMVC项目 (1)会自动创建App_Data文件夹,是用户不能访问和下载的.一般用户能访问那些文件夹,可以在IIS中配置. (2)App_Start文件夹,用于放置与程序有关的配置文件. ...