1.四则运算规则

        int i =(100 + 200) * (99 -88);//3300
int 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);//0
System.out.println(b);//2

1.3.简写的+=和-=

       //取示例1中的n的值
n += 100;//3409
n -= 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个0
String 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个0
String 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);//111689
System.out.println(y2);//111689
System.out.println(z);//410193920

6.总结:

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

廖雪峰Java1-2Java程序基础-3整数运算的更多相关文章

  1. 廖雪峰Java1-2程序基础-5浮点数运算

    1.浮点数运算的特点 很多浮点数无法精确表示 计算有误差 整型可以自动提升到浮点型 如0.1用二进制表示会是一个无限循环的小数.计算机不可能在有限内存中表示一个无限小数.因此浮点数不能精确表示.也造成 ...

  2. 【python】廖雪峰python教程学习--基础

     No1: 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的 No2: 用r''表示''内部的字符串默认不转义 No3: 以'''开头,敲回车可以换行 No4: 布尔 ...

  3. 廖雪峰Java6IO编程-1IO基础-1IO简介

    1.IO简介 IO是指Input/Output,即输入和输出: Input指从外部读取数据到内存,例如从磁盘读取,从网络读取. * 为什么要把数据读到内存才能处理这些数据呢? * 因为代码是在内存中运 ...

  4. python基础-------python2.7教程学习【廖雪峰版】(二)

    2017年6月7日14:59:27任务:    看完python基础1.计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文 ...

  5. phython廖雪峰

    这是小白的Python新手教程,具有如下特点: 中文,免费,零起点,完整示例,基于最新的Python 3版本. Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学 ...

  6. python语言特性-------python2.7教程学习【廖雪峰版】(一)

    开始学习廖雪峰的py2.7教程: 2017年6月5日12:54:28 笔记: 廖雪峰python2.7教程1.用任何编程语言来开发程序,都是为了让计算机干活.  2.Python是一种相当高级的语言. ...

  7. 到头来还是逃不开Java - Java13程序基础

    java程序基础 没有特殊说明,我的所有学习笔记都是从廖老师那里摘抄过来的,侵删 引言 兜兜转转到了大四,学过了C,C++,C#,Java,Python,学一门丢一门,到了最后还是要把Java捡起来. ...

  8. 爬虫:把廖雪峰的教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...

  9. Python自学笔记-sorted()函数(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 排序算法 排序 ...

随机推荐

  1. String类型的注意事项

    1.string类型是可变长字符序列,而vector是集合,存放的是某种类型的可变长序列 2.string类型对象的初始化有多种方式:string str="Hello",是将字符 ...

  2. C语言编程的环境以及架构

    c程序的使用步骤:

  3. Java数字签名算法--RSA

    签名具有的特性: 安全性 抗否认性 数字签名:带有密钥(公钥.私钥)的消息摘要算法(使用私钥进行签名,使用公钥进行验证) 数字签名算法:RSA.DSA.ECDSA 数字签名特性: 验证数据完整性 认证 ...

  4. kbmMW 5.06.20试用笔记

    1.kbmMWConfiguration自动备份配置文件的问题还没有修正. 下面是以前写过的内容,再一次在新闻组中提出这个问题: kbmMW提供一个强大的配置信息管理对象,前期译过这个对象的介绍,在使 ...

  5. CentOS安装setup

    如果在命令行运行 setup 提示乜有安装该命令,那么就需要先安装一下setup命令 执行:yum install setuptool #可以发现执行setup后不全,再安装一个用于系统服务管理yum ...

  6. Python学习(004)-字典{}

    特点: 无序状态 键唯一   不可变类型:字符串.整型.元组 可变类型:列表.字典   字典创建 第一种: dic1={','sex':'man'} print(dic1['name']) ----- ...

  7. PHP连接MYSQL 报错"No such file or directory"

    首先确定是mysql_connect()和mysql_pconnect()的问题,故障现象就是函数返回空,而mysql_error()返回“No such file or directory”. 写个 ...

  8. magento首页点击任何产品都出现404错误的问题方法

    很简单,只要在其他项目上的根目录上复制一个.htaccess文件到项目跟目录下就可以 了,其实就是是设置伪静态:

  9. QT 5.4.1 for Android Windows环境搭建

    QT 5.4.1 for Android Windows环境搭建 2015-5-13 目录 一.参考文章: 二.准备软件: 三.安装准备好的软件: 四.配置Qt 5.4.1 for Android 五 ...

  10. 教你正确进入DFU及恢复模式 无敌重刷模式

    苹果分为两种恢复模式,一种叫做DFU模式,另一种是恢复模式.DFU的全称是Development FirmwareUpgrade,实际意思就是iPhone固件的强制升降级模式.而恢复模式则是屏幕上会显 ...