官网https://www.mindviewllc.com/
Think in java 代码https://github.com/chengyiming/TIJ4-code
java8代码 https://github.com/chengyiming/OnJava8-Examples
什么是对象,对象的五大特性
- 万物皆对象。
- 程序是对象的集合,他们发送消息告知彼此所要做的 。可以想象为对某个特定对象的方法的调用请求
- 每个对象都有自己的由其他对象所构成的存储。 ------组合
- 每个对象都拥有其类型。-------class Person{} Person p = new Person()
- 某一特定类型的所有对象可以接收同样的消息。--------继承
引用操纵对象
String s;
这里只是创建引用,而不是对象。
String s = "asdf"
创建并初始化更安全
String s = new String("asdf");
存储位置
- 寄存器最快的存储区,它位于不同其他存储区的地方----处理器内部。
- 堆栈 位于RAM中,通过堆栈指针可以直接支持。指针下移,分配新内存。上移,释放内存。速度仅次于寄存器
- 堆 用于存放所有的java对象
- 常量存储
- 非RAM存储数据存活于程序之外,在程序没有运行时也可以存在。基本例子流对象和持久化对象。流对象中,通常被发送给另一台机器。持久化对象中,对象被存放于磁盘。如jdbc和hibernate机制
特例:基本类型
存放于堆栈中,创建的并非是引用的“自动”变量,与C/C++采用相同的方法。
类型分为
void | boolean | char | byte | short | int | long | float | double |
---|---|---|---|---|---|---|---|---|
空 | 空 | 16-bit | 8-bits | 16bit | 32bit | 64bit | 32bit | 64bit |
其中byte 范围为 -128 ~ +127 常用于查找出错问题
每一个类型对应一个包装器类型
Void Boolean Character Byte Short Integer Long Float Double
char byte short 无论如何进行算数运算都会自动得到int结果,除非定义运算中的类型都定义为final关键字
高精度数字
BigInteger和BigDecimal
操作符
复制运算符: =
算数运算符 :+ - * / %
自增自减 :++ --
逻辑运算符: && || !
关系运算符: > < <= >= != ==
按位运算符: & | ~
移位运算符: >>(左边的操作数向右移动) >>>(左边的操作数向右移动并且高位补0) <<(右边的操作数向左移动)
9 >> 1 等同于 9/2 向下取整
运算过程中截取与舍入
使用Math.round()采用四舍五入法把float或double 转成 long或int
直接强制转换则发生截取