1 解释main方法格式
格式:
public static void main(String[] args){
}
public:被jvm调用。访问权限要足够大
static:被jvm调用,不用创建对象,直接类名访问
void:被jvm调用,不需要给jvm返回值
main:一个通用的名称。虽然不是关键字,但是被jvm识别
string[ ] args:以前用于接受键盘录入的
2 final,finally,finalize的区别
final用于声明属性,方法和类,分别表示属性不可变,注意:如果是基本类型说明变量本身不能改变,如果是引用类型,说明它不能指向其他的对象了。但对象还是可以改变的。方法不可覆盖,类不可继承。
finally:是异常处理语句结构的一部分,表示无论是否出现异常总是执行
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,如关闭文件等
3 HashMap和Hashtable的区别
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都实现了Map接口,主要区别在于HashMap允许空(null)键值(key)与空值(value),由于非线程安全,效率上可能高于Hashtable,Hashtable不允许空(null)键值(key)与空值(value)
4 String s = new String("wyz");创建了2个String Object,一个是对象,一个是对象的引用
5 sleep和wait的区别
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间(休息),把执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复,时间到了会继续运行。调用sleep对象不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法或(notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
6 数组没有length( )方法,有length属性
7 set里的元素不能重复,如果重复的话重复的就加不到里面。用iterator方法来区分重复与否,应该覆盖equals()判断两个set是否相等
8 ==与equal的区别
==比较的是内存地址,equal比较的是内容本身
9 List,Set继承自Collection接口。Map不是
10 abstract class和interface有什么区别
一个只能继承一个抽象类,但却可以实现多个接口。抽象类中可以有也可以没有抽象方法。并且可以定义和常规类一样的变量和方法。而接口中所有的方法都是抽象的,所有的变量都是静态不可修改的。
11 abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能
12 启动一个线程是用run()还是start()?有什么区别?
启动一个线程是调用start()方法,这并不意味着线程就会立即运行,只是进入了可运行状态。直接调用run()方法不会产生线程,而是把它当做普通的方法调用,马上执行。
13 Constructor不可以被重写,可以被重载。
14 ArrayList和Vector的区别
ArrayList与Vector主要从2方面说。
同步性:Vector线程安全,也就是说同步的,而ArrayList是线程不安全,不是同步的。
数据增长:当需要增长时,Vector默认增长为原来一倍,而ArrayList确实原来的一半
15 多线程的同步实现方法:1 synchronized,wait与notify
16 java语言只由值传递参数,当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是引用是永远不会改变的。
17