1.构造器Constructor是否可被override?
构造器不能被继承,因此不能重写override,但可以被重载overloading。
2.当一个对象被当作参数传递到一个方法之后,此方法可以改变对象的属性,并可返回变化后的结果,那么
这里是值传递还是引用传递?
是值传递,java编程语言只有值传递参数,当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用,对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
3.switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
byte可以,long不行,witch 对String的支持 是 jdk1.7 的特性之一
4.ArrayList 和Vector的区别
同步性:Vector是线程安全的,也就是说同步的,ArrayList是线程不安全的,不同步的;
数据增长:当需要增长时,Vector默认增长为原来的一倍,而ArrayList却是原来的一半。
5.final ,finally,finalize 的区别
final-----修饰符,如果一个类被声明为final,意味着它不能再派生出新的子类,
finally---在异常处理时提供finally块来执行任何清除操作
finalize---方法名,java技术允许使用finalize方法在垃圾收集器将对象从内存中
清除出去之前做必要的清理工作。这个方法是由垃圾回收器确定这个对象没有被引用时对这个对象进行调用的。
finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示java虚拟机的通常操作中
可能遇到的异常,是一种常见的运行错误,
7.什么是java的序列化,如何实现java的序列化
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,
可以对流化后的对象进行读写操作也可以将流化后的对象传输于网络之间,序列化就是
为了解决在对对象流进行读写操作时所引发的的问题。
序列化的实现:实现Serializable接口,该接口没有需要实现的方法,只是为了标注该对象
是可被序列化的,
8.JVM加载class文件的原理机制
Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中
Java中的类装载器实质上也是类,功能是把类载入jvm中,值得注意的是jvm的类装载器并不是一个,而是三个,层次结构如下:
Bootstrap Loader - 负责加载系统类
|
- - ExtClassLoader - 负责加载扩展类
|
- - AppClassLoader - 负责加载应用类
9.java语言如何进行异常处理
java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,在java中,
每个异常都是一个对象,它是Throwable类或其它子类的实例,当一个方法出现
异常后就抛出一个异常对象。
try指定一块预防所有的“异常”的程序,紧跟在try程序后面,包含一个catch子句来
指定你想要捕捉的“异常类型”。
throw 语句用来明确的抛出一个“异常”;
throws用来标明一个成员函数可能抛出的各种异常;
finally 为确保一段代码不管发生什么异常都被执行一段代码;
10.sleep()和wait()有什么区别
sleep是线程类(Thread)的方法,导致线程暂停执行指定时间,给执行机会给其它线程
但是监控状态依然保持,到时候会自动恢复,调用sleep()不会释放对象锁;
wait是Object类的方法,对象调用wait()方法会导致本线程放弃对象锁,进入等待
此对象的等待锁定池,只有针对此对象发出notify()方法(或notifyall())才能进入
对象锁定池准备获取对象锁进入运行状态。
11.Java中的线程有四种状态分别是:运行、就绪、挂起、结束