JAVA常见面试题及解答2015版.doc

JAVA常见面试题及解答2015版.doc

ID:59254664

大小:58.00 KB

页数:22页

时间:2020-09-08

JAVA常见面试题及解答2015版.doc_第1页
JAVA常见面试题及解答2015版.doc_第2页
JAVA常见面试题及解答2015版.doc_第3页
JAVA常见面试题及解答2015版.doc_第4页
JAVA常见面试题及解答2015版.doc_第5页
资源描述:

《JAVA常见面试题及解答2015版.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、JAVA常见面试题及解答(精华)  1)transient和volatile是java关键字吗?(瞬联)如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如:classT{         transientinta;  //不需要维持      intb;  //需要维持}  这里,如果T类的一个对象写入一个持久的存储区域,a的内容不被保存,但b的将被保存。volatile修饰符告诉编译器被volatile修饰的变量可以被程序的其他部分改变。在多线程程序中,有时两个或更多的线程共

2、享一个相同的实例变量。考虑效率问题,每个线程可以自己保存该共享变量的私有拷贝。实际的变量副本在不同的时候更新,如当进入synchronized方法时。 用strictfp修饰类或方法,可以确保浮点运算(以及所有切断)正如早期的Java版本那样准确。切断只影响某些操作的指数。当一个类被strictfp修饰,所有的方法自动被strictfp修饰。strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在

3、对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码:strictfpi

4、nterfaceA{}publicstrictfpclassFpDemo1{         strictfpvoidf(){}   }  2. 错误的使用方法interfaceA{       strictfpvoidf();   }   publicclassFpDemo2{       strictfpFpDemo2(){}   }一旦使用了关键字strictfp来声明某个类、接口或者方法时,那么在这个关键字所声明的范围内所有浮点运算都是精确的,符合IEEE-754规范的。例如一个类被声明为stric

5、tfp,那么该类中所有的方法都是strictfp的。2)抽象类和接口有什么区别?(瞬联)1.abstractclass 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。2.在abstractclass 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是staticfinal的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstra

6、ct的。3.abstractclass和interface所反映出的设计理念不同。其实abstractclass表示的是"is-a"关系,interface表示的是"like-a"关系。4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。5.接口中定义的变量默认是publicstaticfinal 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。7.接口中的方

7、法默认都是 public,abstract 类型的。3)能说一下java的反射(reflection)机制吗?(瞬联)开放性和原因连接(causally-connected)是反射系统的两大基本要素4)在java中怎样实现多线程?(瞬联)extendsThreadimplementRunnable方法一:继承 Thread 类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 run(),加入线程所要执行的代码即可。下面是一个例子:  publicclassMyThreadextendsTh

8、read  {   intcount=1,number;   publicMyThread(intnum)   {    number=num;    System.out.println    ("创建线程 "+number);   }   publicvoidrun(){    while(true){     System.out.println      ("线程 "+number+":计数 "+coun

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。