复习贴:Java基础笔记 -6

1.内存泄露是只一个不再被使用的对象或者变量还在内存占有存储空间。

内存泄露(Memory Leak)是指一个不再被使用的对象或者变量还在内存中占有存储空间。在C/C++语言中,内存泄露出现在开发人员忘记释放已分配的内存就会造成内存泄露。在java语言中引入垃圾回收机制,有GC负责进行回收不再使用的对象,释放内存。但是还是会存在内存泄露的问题。 内存泄露主要有两种情况:1.在堆中申请的空间没有释放。2.对象已不再被使用(注意:这里的不在被使用是指对程序来说没有用处,如数据库连接使用后没有关。但是还是存在着引用),但是仍然在内存中保留着。GC机制的引入只能解决第一种情况,对于第2种情况无法保证不再使用的对象会被释放。java语言中的内存泄露主要指第2种情况。 内存泄露的原因:1.静态集合类。如HashMap和Vector。这些容器是静态的,生命周期和程序的生命周期一致,那么在容器中对象的生命周期也和其一样,对象在程序结束之前将不能被释放,从而会造成内存泄露。2.各种连接,如数据库连接,网络连接,IO连接,不再使用时如果连接不释放容易造成内存泄露。3.监听器,释放对象时往往没有相应的删除监听器,可能会导致内存泄露。 内存溢出(OOM)是指程序在申请内存时没有足够的内存供使用,进而导致程序崩溃这是结果描述。内存泄露(Memory Leak)最终会导致内存溢出。

2.this()和super()不能同时出现,并且两者只能出现在构造器中

super()表示调用父类构造器

this()表示调用本类的无参构造器,本类构造器无参构造器又会自动调用父类构造器

3.Java不检测RuntimeException以及其子类

4.float f =1;和float f = 1.0f 都是正确的,

第一种是将int上转至float类型,向上转,不需要强制

第二种是因为默认为double,所以要加f。

在多个精度运算时,最终以高精度为准

5.

JDK 1.8以前,抽象类的方法默认访问权限为protected 

JDK 1.8时,抽象类的方法默认访问权限变为default 
关于接口 

JDK 1.8以前,接口中的方法必须是public的 

JDK 1.8时,接口中的方法可以是public的,也可以是default的 

JDK 1.9时,接口中的方法可以是private的

6. volatile 修饰的成员变量再每次线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值

7 transient:序列化的对象被transient修饰的实例变量时,java虚拟机JVM跳过该特定的变量

8.外部类不能被static修饰

9.泛型只是在编译时确保类型的准确性,与运行无关,运行时,会把泛型擦除。

10.java不继承父类的构造方法,只是显示或隐示的调用

11.Math.floor(x)返回小于或等于x的最接近整数,类型为double

12.散列表又称哈希表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值