1. 对象存储
- 一般情况
- 寄存器
- 最快的存储区,位于处理器内部。
- 堆栈
- 位于RAM中(随机访问存储器),人们常说的内存,
- 创建程序时,java系统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动堆栈指针。
- 存对象引用
- 存基本类型
- 堆
- 通用内存池,也位于RAM区,存放所有的java对象。
- 不同于堆栈的好处:编译器不需要知道存储的数据在堆里存活多长时间。
- 常量存储
- 可以放在ROM中
- 非RAM存储
- 数据的持久化、序列化、反序列化
- 特例:基本类型
- new一个对象会被存在堆中,但是对于一个小的,简单的变量,存在堆中就不是很有效。因此,java采用C++相同的方法,不用new来创建变量,而是创建一个并非是引用的“自动”变量,这个变量直接存储“值”,并存在于堆栈中。
- java每种基本类型所占存储空间不会随机器硬件架构的变化而变化,这种存储空间不变性是java更具有可移植性的原因之一。
基本类型 | 大小 | 最小值 | 最大值 | 包装器类型 |
boolean | - | - | - | Boolean |
char | 16-bit | Unicode 0 | Unicode 216-1 | Character |
byte | 8 bits | -128 | +127 | Byte |
short | 16 bits | -215 | +215-1 | Short |
int | 32 bits | -231 | +231-1 | Integer |
long | 64 bits | -263 | +263-1 | Long |
float | 32 bits | IEEE574 | IEEE574 | Float |
double | 64 bits | IEEE574 | IEEE574 | Double |
void | - | - | - | Void |
- 基本类型的包装类使得可以在堆中创建一个非基本对象,用来表示对应的基本类型
- 高精度数字
- java提供了两个用于高精度计算的类:BigInteger与BigDecimal,他们属于“包装器类型”,没有对应的基本类型,但是操作与基本类型所能执行的操作相似。
- BigInteger支持任意精度的整数,BigDecimal支持任意精度的定点数
- 数组
2.不用销毁对象
- 作用域
- java会自动帮我们销毁,自动辨别那些不会被引用的对象,进而进行销毁,避免了内存泄漏的问题。
3.数据类型:类
- 字段和方法
- 类中可以设置这两种元素,字段有时被称为数据成员,方法被称为成员函数。
- 方法、参数与返回值
- 方法决定了一个对象能够接收什么样的消息
- 方法名和参数列表唯一标识一个方法
- 若返回类型是void,return关键字只是用来退出方法,因此没有必要非得等到方法结束才离开,而是可以在任何地方返回。如果返回类型不是void,拿无论在何处返回,编译器都会强制返回一个正确类型的返回值。
4.一个java程序
- 名字可见性
- 域名反转 com.baidu
- import
- 所有java代码都必须写在类里
- 使用与编译器附在一起的java标准类库里的构件,则不必写一长串反转域名,只需写为:import java.util.*;
- static
- static修饰的变量指向同一存储空间,而非static修饰的变量每一个对象都有一个存储空间
- static修饰的方法差别不大
5.构建一个java程序
- public static void main(String[] args){}
虽然程序中并没有使用形参args,但java编译器要求必须这样做,因为args要用来存储命令行参数 - 注释和嵌入式文档
- javadoc
- 用于提取注释的工具,输出一个html文件
- 编码风格
- 类名首字母大写 驼峰式命名
- 其他所有内容——方法、字段、对象引用,和类名一样,只是首字母小写。