0
点赞
收藏
分享

微信扫一扫

学习笔记——面向对象第10天

大沈投资笔记 2022-03-21 阅读 74

笔记

1.内存管理:由JVM管理

1堆:
	1)存储new出来的对象(包括实例变量)
	2)垃圾:没有任何引用指向的对象
		垃圾回收器(GC)不定时到内存中清扫垃圾,回收过程是透明的,可以通过调用System.gc()建议JVM尽快调度GC回收
	3)实例变量的生命周期:
			创建(new)对象时存储在堆中,对象被回收时一并被回收
	4)内存泄露:不再使用的对象没有被及时的回收,严重的泄露会导致系统的崩溃
		建议:不再使用的对象应及时将引用设置为null
2.栈:
	1)存储正在调用的方法中的局部变量(包括方法中的参数)
	2)调用方法时,会在栈中为该方法分配一块对应的栈帧,栈帧中存储局部变量(包括方法的参数),方法调用结束时,栈帧被自动清除,局部变量一并被清除
	3)局部变量的生命周期:
			调用方法时存储在栈中,方法调用结束时与栈帧一并被清除
3.方法区:
	1)存储.class字节码文件(包括静态变量、所有方法)
	2)方法中有一份,通过this来区分具体的访问对象

2.面向对象总结(三大特征):

1.封装:
	类:封装的是对象的属性和行为
	方法:封装的是具体的业务逻辑功能实现
	访问控制修饰符:封装的是具体的访问权限,以保护数据的安全
2.继承:
	作用:代码复用
	超类:所有派生类所共有的属性和行为
	接口:部分派生类所共有的属性和行为
	派生类:派生类所有的属性和行为
	单一继承、多接口实现,具有传递性
3.多态:
	行为多态:所有抽象方法都是多态的(通过方法的重写实现的)
	对象多态:所有对象都是多态的(通过向上造型来实现的)
	向上造型、强制类型转换、instanceof判断
Object:所有类的鼻祖,所有类都默认直接或间接继承了Object,当没有设置类的超类时,会默认继承Object,每个对象至少具备两种形态(自己和Object)

3.String字符串类型:

1.java.lang.String使用final修饰,不能被继承
2.java中的String在内存中采用Unicode编码方式,任何一个字符占用两个字节的编码
3.字符串底层封装的是一个字符数组
4.字符串一旦创建,对象内容永远无法改变,但字符串引用可以重新赋值
5.常量池:
	1)java对字符串的优化措施:字符串常量池(堆中)
	2)java推荐使用字面量/直接量的方式来创建字符串,并且会缓存所有以字面量形式创建的字符串对象到常量池中,当时用相同字面量再创建对象时将复用常量池中的对象以减少内存开销,从而避免内存中堆积大量内容相同的字符串对象
	
注:java.lang:语言包(只有此包中的类不需import,系统默认导入)
举报

相关推荐

0 条评论