JAVA笔记2-面向对象与内存解析

时间:2022-06-13 19:40:48

1、java中的变量先声明、再赋值、再使用。(局部变量必须初始化,成员变量默认初始化)

JAVA笔记2-面向对象与内存解析

2、基本类型之外的所有类型都是引用类型。基本类型占一块内存,引用类型占两块(所有new出来的东西装在堆内存,因为是堆是在运行时动态分配内存)。

方法只有在调用的时候才占用内存。

四块:(待完善)

code seg代码区:存放类(类的方法)

data seg数据区:存放静态变量和字符串常量

stack栈内存:存放基本类型变量和局部变量(方法参数和方法内生成的变量)(局部变量都分配在这)

heap堆内存:存放new出来的对象

 JAVA笔记2-面向对象与内存解析

3、关于构造方法:如果自己没有定义,则编译器自动添加默认构造方法;如果自己已经定义了,则编译器不再生成默认构造方法,构造方法没有返回值(不能写void)

4、

JAVA笔记2-面向对象与内存解析

 

5、重载(方法名相同):参数个数或参数类型不同才构成重载(编译器可以区分开),只有返回值类型不同不构成重载(编译器无法区分开)。

6、例题注意基本类型和引用类型都是通过“值传递”的

JAVA笔记2-面向对象与内存解析JAVA笔记2-面向对象与内存解析

可见,运行完毕后,只有change3()方法可以改变d2的值,而change1()和change2()不能达到预期效果,不能改变值data和d1的值。

红点处执行完毕后,change2()方法中的局部变量b马上消失(因为是栈中的局部变量,随着方法的结束而消失),但b所指向的堆内存不是马上消失,而是等待垃圾回收。

7、内存分析大题(方法的返回值存储在一个临时区域内,打印完成后自动消失。)

JAVA笔记2-面向对象与内存解析

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

JAVA笔记2-面向对象与内存解析

JAVA笔记2-面向对象与内存解析

 

JAVA笔记2-面向对象与内存解析