JAVA对象

引用

在这里插入图片描述

注意:这里的stu只是变量而已,并不是对象,stu只是用来访问new Student这个对象的。这里的引用和c++中是不同的,c++中的引用是别名,但是这里的引用stu其实就是一个变量,通过变量,访问对象。

1、Java引用

在这里插入图片描述

String是一个JAVA类,String s,之后s就可以访问一个字符串了,但是注意,这个时候还没有对象(这里与c++中不同),JAVA这句话执行之后,只生成一个引用,或者只生成一个对象变量而已,在内存中,它所指向的值是NULL。
注意:即使会默认赋值,但是如果打印的时候会出错,因为没有赋初值;

(2)生成新的字符串对象之后,s就会指向这个对象,或者是说把这个对象的操作权赋值给s了。
JAVA里面所有的对象是new出来的(这个也是与c++中很大的不同点),new出来的东西都放在堆内存中,JAVA里面的所有对象都是动态分配内存的

在这里插入图片描述

注意:这个字符串,这个地址不是物理地址,这个地址是jvm算法算出来的

一定要区分对象变量和对象本身,它们两个是不同的。通过对象变量,通过引用,可以访问对象。

2、对象创建和使用

在这里插入图片描述

注意:System是一个对象,而out则是一个方法;

3、内存空间分配

一个方法执行的时候都会创建自己的栈内存。

方法执行结束的时候,栈内存也将自然销毁。

堆内存中的对象不会随着方法的结束而销毁。

4、JVM内存分配

堆、栈、数据区、代码区

在这里插入图片描述

5、总结

在这里插入图片描述
方法仅有一份是因为(代码区只有一份),在调用代码的时候,调用一份即可

在这里插入图片描述

6、JAVA对象的生成对象
(1)创建:创建的时候用new来创建对象,这个时候使用的是构造方法,这和c++中类似,构造方法转门用来创建对象。
(2)使用对象:是通过引用,通过对象变量来使用对象。
(3)清理:JAVA自动回收,不像c++中需要用析构。

在这里插入图片描述
是JRE负责回收不再使用的内存,这种机制被称为垃圾回收

7、垃圾回收
在这里插入图片描述

垃圾回收自动释放的是不再被程序引用的对象。

System是对象,gc()是方法,同时gc()还是静态方法,因为被类直接使用,普通的方法是不能被类直接使用的。

Runtime.getRuntime().gc()其中gc()是getRuntime()返回对象的方法

gc()之后不一定接着回收。
注意:
(1)finalize方法是JAVA里面所有类中都有的功能,功能是,当垃圾回收器要回收这个对象的时候,会自动调用finalize方法。
(2)垃圾回收是依靠一种算法,程序员是无法精确地控制进行控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值