发布时间:2023-11-19 11:00
接口允许定义成员,但必须是常量。
抽象类和接口类的无法实例化,任何编译器中直接使用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类而导致溢出。