1.2004年发布 JDK1.5 即 JDK5 、J2SE 5 、Java 5
–泛型
–注解
–装箱
–枚举
–可变长的参数
–Foreach循环
nJDK1.6 JDK6
–脚本语言支持
–JDBC 4.0
–Java编译器 API
1.2011年 JDK7发布
–延误项目推出到JDK8
–G1
–动态语言增强
–64位系统中的压缩指针
–NIO 2.0
n2014年 JDK8发布
–Lambda表达式
–语法增强 Java类型注解
n2016年JDK9
–模块化
1.java语言规范
1.语法 2.变量 3.类型 4.文法
2.JVM 规范
1.class文件类型 2.运行时的数据 3.帧栈 4.虚拟机的启动5.虚拟机的指令集
1.class文件格式 2.数字内部标示和存储-Byte -128到127 (-2^7 到2^7-1)
3.定义pc 4.堆 5.栈 6.方法区
整数表达式
00000111
1.原码:第一位为符号位 (0为正数,1为负数)
2.反码::符号位不动 原码取反
3.负数补码:符号位不动,反码+1
4.正数补码:和原码相同
-6 | 数据 | |
10000110 | 原码 | |
11111001 | 反码 | |
11111010 | 补码 |
-1 | |
10000001 | 源码 |
11111110 | 反码 |
11111111 | 补码 |
为什么要使用补码?
1. 0既不是正数也不是负数 可以用补码表示0没有歧义
0 | 数据 | ||
/00000000 | 正数表示(原码) | ||
/10000000 | 负数表示(原码) | ||
/11111111 | 负数反码 | ||
/00000000 | 负数补码 | ||
/00000000 | 正数补码 | ||
总结:用补码表示0 没有歧义表示0 |
2.做加法运算的时候 只需要使用补码相加,符号参与运算,就是正确的结果,原码相加不能得到结果。
/-6+5 | 数据 |
/11111010 | -6补码 |
/00000101 | 5补码 |
/= 11111111 | 相加 |
/-4+5 | 数据 |
/11111100 | -4补码 |
/00000101 | 5补码 |
/= 00000001 | 相加 |