1.四则运算规则

        int i =(100 + 200) * (99 -88);//3300int n = i + 9;//3309//除法结果为整数int q = n / 100;//33//除数为0时运行将报错int x = n / 0;//抛出异常:Exception in thread "main" java.lang.ArithmeticException: / by zero

1.2.++运算和--运算

i++是先访问i然后再自增,而i++则是先自增然后再访问i的值

        int i = 0;int a = i++;int b = ++i;System.out.println(a);//0System.out.println(b);//2

1.3.简写的+=和-=

       //取示例1中的n的值n += 100;//3409n -= 100;//3309//取余运算符%int m = n % 100;//9

1.4整数运算运算规则

  • 计算结果溢出不报错
  • 计算结果是不正确的
    解决方法:用范围更大的整型。
        int i = Integer.MAX_VALUE;System.out.println(i);int x = i + 1;System.out.println(x);long y = (long)i + 1;System.out.println(y);

2.移位运算

  • 左移 <<
  • 右移 >>
  • 不带符号右移 >>>
  • byte和short会先转换为int再进行移位
    int n1 = 5;String s1 =  Integer.toBinaryString(5);System.out.println("5的二进制:"+s1);System.out.println();int n2 = n1 << 10;//左移10位,在后面加10个0String s2 = s1 + "0000000000";//字符串加10个0,得到二进制字符串System.out.println(s1+"~对字符串左移10位~"+s2+"\t转化为10进制数:"+Integer.parseInt(s2,2));System.out.println("直接左移10位:n2="+n2);System.out.println();int n3 = n2 >> 11;//右移11位,去掉11个0String s3 = "10";//s2=1010000000000去掉后面的11位数System.out.println(s2+"~右移10位~"+s3+"\t"+Integer.parseInt(s3,2));System.out.println("直接右移11位:n3="+n3);System.out.println();int n4 = n1 << 29;//最高位是符号,1表示符号,0表示整数System.out.println(n1+"直接左移29位:"+n4);System.out.println();int n5 = n4 >> 29;//保留符号位右移String s5 = "10";//s2=1010000000000去掉后面的11位数System.out.println(n4+"直接右移29位:"+n5);System.out.println();int n6 = n4 >>> 29;//无条件右移System.out.println(n4+"无条件右移11位:"+n6);

3.位运算

通常2个整数进行位运算,首先按位对齐,依次对每一位进行进行位运算。

3.1位运算 与运算& 2个都为1,结果为1

  • 1 & 1 = 1, 1 & 0 = 0, 0 & 1 = 0,0 & 0 = 0

3.2或运算| 有1个为1,结果为1

  • 1 | 1 = 1, 1 | 0 = 0, 0 | 1 = 0,0 | 0 = 0

3.3亦或运算^不相同结果为1

  • 1 ^ 1 = 0, 1 ^ 0 = 1, 0 ^ 1 = 1,0 | 0 = 0

3.4非运算~

  • ~ 1 = 0, ~ 0 = 1
        int n1 = 0x03_83_d0_25;int n2 = 0x00_00_ff_ff;int n3 = n1 & n2;int n4 = n1 | n2;System.out.println(n3);System.out.println(n4);System.out.println(Integer.toBinaryString(n1));System.out.println(Integer.toBinaryString(n2));System.out.println("n1&n2:"+Integer.toBinaryString(n3));System.out.println("n1|n2:"+Integer.toBinaryString(n4));


具体过程参看下图

4.运算优先级


记不住没关系,直接加括号就是

5.类型自动提升与强制转型

  • 在运算过程中,计算结果为较大类型的整型
  • 可以将结果强制转型:(类型)变量或数值。
  • 强制转型可能丢失精度。long类型是64位,强制转为int类型,会将高位抛弃。
        short s = 12;int i = 100 +s;long n = 999 * i;//int x = n - 199;//编译错误int y1 = (int)(n - 199);int y2 = (int)n - 199;int z = (int)(n * 100000000);System.out.println(y1);//111689System.out.println(y2);//111689System.out.println(z);//410193920

6.总结:

  • 整数运算结果永远精确
  • 运算结果会自动提升
  • 可以强制转型,但可能丢失精度
  • 选择合适范围的整型(int, long)

转载于:https://www.cnblogs.com/csj2018/p/10242045.html

廖雪峰Java1-2Java程序基础-3整数运算相关推荐

  1. 【笔记】Python学习(廖雪峰)笔记①——Python基础知识

    Python学习(廖雪峰)笔记①--Python基础知识 Python 基础知识 字符串与编码 ASCII.Unicode.UTF-8 Python字符串 格式化 使用list和tuple list( ...

  2. Java教程 -- 廖雪峰

    Java快速入门 Java简介 Java介于编译型语言和解释型语言之间.编译型语言如C.C++,代码是直接编译成机器码执行,解释型语言如Python可以由解释器直接加载源码然后运行,代价就是运行效率太 ...

  3. java廖雪峰_廖雪峰Java教程学习笔记(一)——Java程序基础

    (一)Java程序基本结构 Java是面向对象的语言,一个程序的基本单位就是class.在class内部,可定义若干方法. 类名要求: 类名必须以英文字母开头,后接字母,数字和下划线的组合 习惯以大写 ...

  4. 廖雪峰Python基础练习(二)

    #廖雪峰Python基础练习(二)# 请利用Python内置的hex()函数把一个整数转换成十六进制表示的字符串: 答: # -*- coding: utf-8 -*-n1 = 255 n2 = 10 ...

  5. 如何找到python廖雪峰基础_python3 基础 廖雪峰教程笔记-1

    廖雪峰教程文档:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143252 ...

  6. python基础教程廖雪峰云-为什么看不懂廖雪峰的Python学习教程?

    廖雪峰的Python教程已经很友好了,接近于把饭喂到嘴边了. 这不是廖雪峰教程的问题,而是一个基础代码技能和实际应用需求的代码技能差距太远导致的. 如果是新手,只学会了廖雪峰Python教程,那约等于 ...

  7. Java基础知识 廖雪峰教程笔记

    Java基础知识 Java基础知识 java简介 名词解释 运行Java程序 Java基本数据类型 模块 包装类型 记录类 异常处理 Java异常 使用Commons Logging 使用log4j ...

  8. Python 3 学习(一)—— 基础:廖雪峰 Python 教程学习笔记

    文章目录 Python教程 值类型和引用类型 列表和字典的基本操作 列表 元组 字典 Set 函数 内置函数 定义函数 空函数 参数检查 定义默认参数要牢记一点:默认参数必须指向不变对象! Pytho ...

  9. python学习笔记1——(廖雪峰教程,菜鸟教程)python基础

    python学习笔记1--(廖雪峰教程,菜鸟教程) https://www.liaoxuefeng.com(https://www.liaoxuefeng.com) 阿修视频 .Python基础(复习 ...

最新文章

  1. 图解Windows下开发Objective-C程序之一 - 搭建Objective-C开发环境
  2. 在Kaggle上免费使用GPU
  3. checkbox保存和赋值
  4. python获取服务器文件svn版本信息_如何编程获取SVN版本号?
  5. 震惊!谷歌专家爆料:Python和AI这回真的玩大了!网友:好方法!
  6. 自定义字体需要css的,CSS 自定义字体
  7. Unix-Center.Net需要你的帮助
  8. 【爬虫Practice2】爬取豆瓣高分电影
  9. ks 曲线_ROC曲线与KS曲线的理解
  10. C++: STL: atomic
  11. MATLAB图像如何显示希腊字母、上下标(alpha、beta等)
  12. 有趣的手机壁纸——水印壁纸
  13. F - Shifting String(置换的阶+思维)
  14. ua识别(浏览器标识识别)
  15. POJ 1287-Networking
  16. [经验]HP小机一次无故当机的经历总结
  17. thisis incompatible with sql_mode=only_full_group
  18. 浅析Statement和PreparedStatement的区别
  19. stunnel客户端的使用
  20. UIStoryboardSegue(多控制器)

热门文章

  1. 换一个角度再谈一下WF
  2. ajax跨域,这应该是最全的解决方案了
  3. Google使用机器学习助力数据中心节能
  4. 基于特征点匹配的自适应目标跟踪算法
  5. 背景建模与前景检测3(Background Generation And Foreground Detection Phase 3)
  6. 使用kubeadm 安装 kuberntes 1.13.3
  7. python函数解释
  8. Uva 10562 看图写树
  9. http://www.cnblogs.com/qtqq/p/5271164.html
  10. java操练之求两数最大公约数的两种算法思路