java--内存与数据结构

发布时间 2023-09-21 22:18:29作者: szmtjs10

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,那么这个字段或方法属于类,不属于对象


类中一些叫法的区分


深入理解变量

 

 

面向对象三大特性

封装
封装是指将对象的实现细节隐藏起来,然后通过公共的方法来向外暴露该对象的功能

继承
当子类继承父类后,子类是一种特殊的父类,能直接或间接获得父类里的成员

多态
多态是可以直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,这意味着同一类型的对象在运行时可能表现出不同的行为特征