2019-6-4牛客网刷题易错知识点

接口允许定义成员,但必须是常量。

抽象类和接口类的无法实例化,任何编译器中直接使用new会报错。

Hashtable 中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。在多线程并发的环境下,可以直接使用Hashtable,但是要使用HashMap的话就要自己增加同步处理了。

Hashtable中,key和value都不允许出现null值。

在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。

④两个遍历方式的内部实现上不同。

Hashtable、HashMap都使用了 Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式 。

哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。

Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。

sleep()是Thread类中的方法,而wait()则是Object类中的方法。 

sleep()方法导致了程序暂停,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。 

 

Hashtable 是一个哈希表,该类继承自Dictionary类,实现了 Map 接口

Properties 类 继承了 Hashtable 类,而 Hashtable 类则继承Dictionary 类

访问权限:public(公共)> protected(子类)> default(包)> private(自身)

 

非抽象类继承抽象类,必须将抽象类中的方法重写,否则需将方法再次申明为抽象。所以这个方法还可再次声明为抽象,而不用重写。而用重载也错了,重载是在同一个类中,重写、覆盖才是在父子类中。

 

构造函数不能被继承,只是显式或者隐式调用。

子类的构造函数中可以调用其他函数。

 

接口中的方法必须是public的,接口中不能定义私有方法 。

 

vi的三种模式只有一般指令模式可以与编辑、指令列模式切换。编辑模式和指令列模式之间是不能进行相互切换的。

 

数据类型的转换,分为自动转换和强制转换。自动转换是程序在执行过程中 “ 悄然 ” 进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,转换顺序不受限制。

自动数据类型转换

自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下: 

低 ---------------------------------------------> 高 

低级向高级是隐式类型转换,高级向低级必须强制类型转换。

byte

今天才知道原来long到float不用强转,因为float表示的范围确实比long表示的范围大,虽然它只占4个字节,而long占8个字节

 

如果同时出现继承和实现,则必须先继承(extends)再实现(implements)

类方法是指类中被static修饰的方法,无this指针。

类方法是可以调用其他类的static方法的。

可以在类方法中生成实例对象再调用实例方法

 

final修饰类、方法、属性!不能修饰抽象类,因为抽象类一般都是需要被继承的,final修饰后就不能继承了。

final修饰的方法不能被重写而不是重载! 

final修饰属性,此属性就是一个常量,不能被再次赋值!

 

JDK提供的用于并发编程的同步器有Semaphore、CyclicBarrier、CountDownLatch

java.util.*,只能读取其目录下的类,不能读取其子目录下的类。

 

java的堆内存分为两块:permantspace(持久带) 和 heap space。

持久带中主要存放用于存放静态类型数据,如 Java Class, Method 等, 与垃圾收集器要收集的Java对象关系不大。

而heapspace分为年轻带和年老带 

年轻代的垃圾回收叫 Young GC, 年老代的垃圾回收叫 Full GC。

在年轻代中经历了N次(可配置)垃圾回收后仍然存活的对象,就会被复制到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象

年老代溢出原因有  循环上万次的字符串处理、创建上千万个对象、在一段代码内申请上百M甚至上G的内存,既

A循环上万次的字符串处理

B在一段代码内申请上百M甚至上G的内存

D选项不断创建对象

都对

持久代溢出原因  动态加载了大量Java类而导致溢出。

 

 

你可能感兴趣的:(笔记)