Java面试经典问题解析

5星 · 超过95%的资源 需积分: 33 13 下载量 15 浏览量 更新于2024-07-20 收藏 2.14MB PDF 举报
"java面试题" Java面试题涵盖了广泛的知识点,包括语法、数据类型、运算符、流程控制、类和对象、封装、继承、多态、接口、内部类以及异常处理等多个方面。以下是对这些面试题涉及知识点的详细解释: 1. 一个.java源文件可以包含多个类,但只能有一个公开的(public)类,其他类可以是非公开的(非public)。 2. Java没有goto语句,它鼓励使用结构化的控制流。 3. &是按位与运算符,&&是逻辑与运算符。前者会始终计算两边的操作数,后者在左侧操作数为假时不会计算右侧。 4. 要跳出多重嵌套循环,可以使用label + break语句,或者在循环内部设置一个标志并检查该标志以跳出循环。 5. switch语句可以作用在byte、char、short和int上,Java 7以后还可以作用在枚举类型上,但不能作用于long或String。 6. 在short s1 = 1;的情况下,s1 = s1 + 1;会导致编译错误,因为加法操作的结果是int类型。而s1 += 1;会自动进行类型转换,将int转换回short。 7. char型变量可以存储一个中文汉字,因为UTF-16编码中一个字符可能占据16位,char正好是16位。 8. 计算2乘以8最有效率的方法是使用位移操作:2 << 3。 9. 设计一个一百亿的计算器需要考虑数值类型的溢出问题,可以使用BigInteger类来处理大整数。 10. 使用final修饰变量,如果修饰引用,则引用不可变,但引用的对象可以变;如果修饰对象,整个对象不可变。 11. ==比较的是对象的引用,而equals()比较的是对象的内容。对于基本类型,==即比较值;对于对象,需要重写equals()方法以比较内容。 12. 静态变量属于类,实例变量属于对象。静态变量被所有对象共享,实例变量在每个对象中独立存在。 13. 不能从static方法内部直接调用非static方法,因为static方法不依赖于任何对象,而非static方法需要对象实例。 14. Integer是int的包装类,两者一个是对象,一个是基本类型。Integer在某些操作中会涉及到对象创建和自动装箱/拆箱。 15. Math.round(11.5)等于12,Math.round(-11.5)等于-11。 16. 代码的不妥之处可能涉及语法错误、逻辑错误或不符合编程规范等问题,需要具体分析代码内容。 17. public表示全局可见,private表示仅在类内部可见,protected表示在类内部和子类中可见,无访问修饰符时表示在同一包内可见。 18. Overload(重载)是指方法名相同但参数列表不同的多个方法,返回值类型可以不同。Override(重写)是指子类覆盖父类的同名方法,必须保持方法签名一致。 19. 构造器不能被override,但子类可以定义与父类构造器相同签名的构造器,这称为重载。 20. 接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类,抽象类中可以有静态的main方法。 21. 实现克隆时,通常会声明`clone()`方法,并调用`super.clone()`来实现对象的浅复制。 22. 面向对象的特征包括封装、继承、多态和抽象。 23. Java中的多态是通过方法的重写(Override)和向上转型(Upcasting)实现的。 24. abstract class可以有抽象方法和非抽象方法,可以包含实例变量和方法,而interface只能包含抽象方法和常量。 25. abstract方法不能是static、native或synchronized,因为它们的性质与抽象方法相冲突。 26. 内部类是定义在另一个类内部的类,分为静态内部类(Static Nested Class)和非静态内部类(Inner Class)。静态内部类可以直接通过类名访问,而内部类需要外部类实例。 27. 内部类可以访问其包含类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员,需要通过内部类的实例来访问。 28. A类的匿名内部类可以继承A类,也可以实现A类实现的接口,但不能同时继承A类和实现A类实现的同一个接口,因为Java不支持多继承。 以上内容详细解析了Java面试题中涉及的主要知识点,为准备面试或复习Java基础知识提供了参考。