Java基础几个问题

来源:互联网 发布:filemaker mac 破解 编辑:程序博客网 时间:2024/06/07 10:14

问题1

error和exception的区别?

回答:

error表示应用程序本身无法克服和恢复的一种严重问题,exception表示程序还能够克服和恢复的问题,其中又分为运行时异常和普通异常,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,编译器没有强制要求捕获运行时异常。
举例说明:
运行时异常:零除,数组越界,空指针,类型转换错误(ClassCastException),数字转换错误(NumberFormatException)
普通异常:IOException,FileNotFoundException,SQLException
错误:内存溢出、线程死锁

问题2

final finally finalize的区别?

回答:

final:final成员就是常量,一旦被初始化便不可改变;final方法不能被覆写(能被继承);final类不能被继承;
finally:异常处理模块的一部分
finalize:手动调用垃圾回收,但并不能保证其被回收

问题3

java怎么保证放射的安全性?

回答:

Reflect包下有一个安全性管理类,AccessibleObject。是 Field、Method 和 Constructor 对象的基类,它有一个setAccessible的方法,能够对这些类中的实例做接入检测的控制。只有被这个类许可了,才可以免去检测,不然会抛出异常

问题4

Object的方法?

回答:

clone、getClass、toString、finalize、equals、hashCode、wait、notify、notifyAll

问题5

Java有指针吗?

回答:

指针操作困难和不安全性使得Java放弃了指针的概念。但这只是在Java语言中没有明确的指针定义,实质上每个new的返回都是一个指针的引用。这种指针被编译器和运行期系统严格的防范,从而控制在安全的范围内。

问题6

常量与静态变量的区别?

回答:

  • 常量是值的形式,内存中是不分空间的,一个常量一旦被分配,就不允许改变
  • 静态变量是变量形式,内存中是要分空间的,静态变量只初始化一次,所以不管其所在的类被实例化几次,这个静态变量的实例只存在一个
  • 如下面这个例子:
for(int i=0;i<10;i++){ static b=0; b+=i; } 

只有第一次定义的时候初始化b,以后都直接跳过static b=0,但是b的值是可变的

问题7

什么是对象序列化?

回答:

对象序列化能将一个对象转换成一组byte,日后要用这个对象的时候,通过这些byte数据恢复重新构建对象。它是可以跨越网络跨越操作系统的,如你在Windows机器上创建一个对象并将他序列化之后,通过网络传输到linux机器上,然后在那里重建。这就是Java远程方法调用的基础,能调用自己机器上的对象那样去调用其他机器上的对象。 对象序列化能实现persistence,也就是对象生命周期不是由程序运行时候决定。 简单的说,当你声明了某个对象序列化之后,JVM会把这个对象转成字节流,可以进行网络传输(按值封送)或者保存在硬盘上(持久存储)。 Java中只要实现Serializable接口(这只是一个标记接口,也就是没有任何方法的接口,直视告诉JVM该对象被序列化)就能实现对象序列化。

0 0
原创粉丝点击