JVM 内存划分
栈
一种数据结构
特点:先进后出(FILO)
入栈:把元素放到栈里
栈顶:栈中的第一个元素
栈底:栈中的最后一个元素
出栈:把元素从栈里移除
基本数据类型–值传递
引用类型–地址传递
堆
数组在堆中存储
若堆中的内存空间没有被引用的时候,就会变成垃圾,等着垃圾回收器回收
垃圾回收机制
对象在堆中存储
基本数据类型在堆中的初始值
整数
byte 0 |
|
short 0 |
|
int 0 |
|
long 0L |
|
小数
float 0.0f
double 0.0d
字符
布尔
boolean false
对象
包含特性和行为的一个实体,也称实例(instance)
成员变量 对象的一些状态特征
方法 对象的行为
类
把具有相同"特性"和"行为"的多个对象的抽象就是类
类的实例化
把类具体到某一对象上面,该对象有具体什么的状态特征和什么行为
Dog td = new Dog();
td.name = "泰迪";
1
2
匿名对象
匿名对象:创建一个对象,没有把它赋值给任何一个变量
匿名对象只能使用一次
new Dog().name = "zz";
1
对象的创建
创建对象
类 对象名 = new 类名();
Person zly = new Person();
1
赋值
定义类时时什么数据类型,赋值时就是什么数据类型
对象名.变量名 = 值;
zly.name = "zhaoliying";
1
对象调用方法
对象名.方法名([实参])
zly.sing("流行音乐");
1
方法有返回值,构造器没有返回值
构造器
字节码 存在位置 bin 文件夹下
方法重载:方法名相同,参数不一样
static 修饰符
状态和行为有:对象和类之分
有的状态和行为属于对象(年龄和姓名属于人这个对象),
有的状态和行为属于类(e.g. 人口状态和毁灭属于人类这个类)
如果在字段和方法前添加static,那么这个字段或方法属于类,不属于对象
类中一些叫法的区分
深入理解变量
面向对象三大特性
封装
封装是指将对象的实现细节隐藏起来,然后通过公共的方法来向外暴露该对象的功能
继承
当子类继承父类后,子类是一种特殊的父类,能直接或间接获得父类里的成员
多态
多态是可以直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,这意味着同一类型的对象在运行时可能表现出不同的行为特征