Java面试经典问题解析

5星 · 超过95%的资源 需积分: 33 5 下载量 159 浏览量 更新于2024-07-23 收藏 2.14MB PDF 举报
"Java面试问题集,包含了Java基础、语法特性、面向对象、类与接口、内部类等多方面的面试知识点,适用于准备Java面试的程序员参考学习。" 1. Java基础部分: - 一个.java源文件中可以包含多个类,但只能有一个公开的类(public class),其他类可以是非公开的(non-public)。 - Java没有goto语句,它支持基于结构的编程,鼓励使用break或continue来控制流程。 - &是按位与运算符,&&是逻辑与运算符。&始终会计算两边的操作数,而&&会在左操作数为假时短路,不会计算右操作数。 - 要跳出多重嵌套循环,可以使用标记(label)配合break语句,或者使用return语句。 2. switch语句: - switch不能直接用于byte、long和String类型,但在Java 7以后,switch支持了String类型。 3. short变量增加: - shorts1=1;s1=s1+1; 这里会有编译错误,因为短整型(short)与整型(int)相加结果为int类型,需要强制转换回short。 - shorts1=1;s1+=1; 这是正确的,因为Java会自动处理这种类型的提升和转换。 4. char型变量: - 可以存储一个中文汉字,因为UTF-16编码中一个汉字占用两个字节,char类型也是两个字节。 5. 最有效率的计算2乘以8: - 直接赋值:int result = 2 << 3; 6. final关键字: - 使用final修饰变量,意味着变量一旦初始化后就不能改变。 7. ==与equals方法: - ==比较的是变量的值是否相等,而equals方法(默认行为)比较的是对象的内容是否相等,对于非基本类型,重写了equals的类会比较对象的属性。 8. 静态变量与实例变量: - 静态变量属于类,不依赖于任何实例,而实例变量属于类的实例,每个实例都有自己的副本。 9. 从static方法内部调用非static方法: - 不可以直接,因为static方法无法访问非static的成员,需要先创建实例。 10. Integer与int: - Integer是int的包装类,它们之间可以自动装箱和拆箱。Integer对象在一定范围内有缓存,超过范围则需要new实例。 11. Math.round方法: - Math.round(11.5)等于12,Math.round(-11.5)等于-11。 12. 不妥的代码: - 没有给出具体代码,但可能涉及到未初始化的变量、空指针异常、数组越界等问题。 13. 作用域: - public、private、protected和默认(包级私有)分别表示全局、类内私有、同一包内可见和仅本类可见。 14. Overload和Override: - Overload是重载,方法名相同但参数列表不同;Override是重写,子类方法覆盖父类同名方法。Overloaded方法不能改变返回类型。 15. 构造器: - 构造器不能被override,但可以被重载。 16. 接口与继承: - 接口可以继承接口;抽象类可以实现接口;抽象类可以继承具体类;静态main方法不能存在于抽象类中。 17. clone方法: - 实现Cloneable接口并覆写clone()方法时,通常需要添加`super.clone()`来实现深拷贝。 18. 面向对象特征: - 封装、继承、多态。 19. 多态机制: - 多态性体现在Java的动态绑定上,允许父类引用指向子类对象。 20. abstractclass和interface: - 抽象类可以有方法实现,接口全为抽象方法;类最多只能继承一个抽象类,但可以实现多个接口。 21. abstract、static、native、synchronized: - abstract不能与static、native同时使用,但可以与synchronized一起使用。 22. 内部类: - 内部类是定义在另一个类中的类,可以访问外部类的所有成员,包括私有成员。 23. StaticNestedClass和InnerClass: - StaticNestedClass是静态嵌套类,可以直接通过类名访问;InnerClass是内部类,需要外部类实例才能访问。 24. 内部类引用外部类成员: - 内部类可以直接访问外部类的静态成员和实例成员,但访问实例成员时需要对外部类实例进行引用。 25. A