Java企业教程系列
Java面试题
问:如果main方法声明为私有?
答:程序编译正常,但在运行时它会发出“ Main方法不是公共的。 ”的消息。
问:什么是通过引用传递的意思和价值在Java中传递?
答:通过引用方式传递,传递的地址本身,而不是传递值。按值方式传递值的拷贝传递。
问:如果你重写equals方法,有什么其它方法你也可以考虑?
答:hashCode()方法
问:什么是字节码?或 问:Java“一次编写,到处运行”的性质是什么?
答:所有Java程序被编译成包含字节码的类文件。这些字节码可以在任何平台上,这样Java被认为是独立于平台上运行。
问:解释一下public static void main(String args[])每个词?
答:public – main(..) 是当一个程序被执行时由java环境调用的第一种方法,所以它必须能从Java运行环境访问。因此,访问控制符必须是公共的。
static: Java环境应该能够在无需创建类的实例情况下调用此方法,,所以这种方法必须声明为静态的。
void:不返回任何东西,因此返回类型必须是void
String参数字符串表示这是在命令行给出的的一个字符串数组。
问:什么是==和. equals()方法的区别?
或问:比较两个字符串变量 - 选择==还是equals方法( ) ?
答:==运算符比较两个对象,以确定它们是否在内存中,即存在于相同的内存位置相同的对象。这是可能的两个String对象具有相同的值,但位于不同的存储区域。
==是比较引用,而equalss是比较内容。该方法public boolean equals(Object obj) 由Object类提供的,并且可以被覆盖。当对象是与自身相比时默认的实现返回true 。对于两个String对象,值相等意味着它们含有相同的字符序列。对于包装类,值相等的意思是原始值是相等的。
问:如果static修饰符是从main方法的签名去掉?
或问:如果我不提供String数组作为参数传递给方法?
答:程序可以编译。但在运行时抛出一个错误“ NoSuchMethodError ” 。
问:final, finally 和finalize区别是什么?
答:final – 宣称是常量 一旦赋值不再改变
finally – 处理出错
finalize –帮助垃圾回收
接口中的值是显式的final,一个final 类不能被继承,final能够让编译器做一些优化,并且线程安全更容易实现,一个final方法也不能被覆盖。
finalize()方法被用于之前的对象被销毁和垃圾收集。
finally: 在出错时无论是否抛出Exception,都肯定执行的,可以用在关闭数据库连接等方面。
问:什么是Java API?
答:该Java API是一个大集合现成的软件组件,提供了许多有用的功能,如图形用户界面(GUI )的部件。
问:什么是ResourceBundle类?
答:ResourceBundle类用于存储特定的语言环境的本地化区域设置资源。,可以通过程序加载到定制程序的外观。
问:为什么在Java中没有全局变量?
答:全局变量是全局可访问的。 Java不支持全局可访问的变量,由于以下原因:
全局变量打破了引用透明
全局变量在命名空间中引起冲突。
问: while语句和do语句之间的区别是什么?
答:while语句循环。 do语句总是至少执行一次循环体。
问:描述的OOPS的原则。
答:主要的原则多态,继承和封装。
问:请解释的继承原则。
答:继承是由哪一个对象获得另一个对象的属性的过程。继承运行重复使用,一次修改能够影响相关类。(从这点说,继承也是一种紧耦合)
问:什么是封装,继承和多态性
或问:请解释多态性原则。解释不同形式的多态性。
多态性简单来说是指一个多种形式的名词。多态性存在三种不同的形式在Java中:
方法重载
方法覆盖通过继承
通过Java接口的方法覆盖
问:请解释的封装原则。
答:封装是绑定数据和数据的操作行为到单个实中的方法。这使数据免于从外部接口和滥用。
问:什么是Java虚拟机(JVM ) ?
答:Java虚拟机是一种软件,可以移植到各种基于硬件的平台
问:System.out.println() ,System是什么?
答:System是一个预定义的final类, out是一个的PrintStream对象,println是其重载方法。
问: JVM中维护一个缓存本身?
答:是的,在JVM本身维护一个缓存。它在堆上创建对象,但引用这些对象是在栈上。
问:什么是幻象记忆?
答:幻影内存错误记忆。这在现实中并不存在的记忆。
问:什么是瞬态transient 变量?
答:瞬态变量不能被序列化。例如,如果一个变量被声明为transient,在Serializable类和类被写入到一个ObjectStream时 ,该变量的值不能被写入流。从ObjectStream检索到的变量的值也是空。
问:同步是什么?
答:同步是在多个线程控制共享资源的访问,在同一时间只有一个线程可以访问一个资源。在非同步多线程应用程序,一个线程修改共享对象,而另一个线程在使用或更新对象的值,会造成数据混乱。同步防止这种类型的数据损坏与混乱。
问:volatile是什么?
答:每次检查。每个线程都保持volatile变量的最新值