Java面试必备知识:基础到高级

需积分: 10 2 下载量 42 浏览量 更新于2024-07-25 收藏 1.12MB PDF 举报
"Java面试宝典2013版提供了丰富的Java编程和面试知识点,涵盖了基础语法、逻辑控制、数据类型、类与对象、接口与抽象类、内部类等多个方面。" 1. Java源文件可以包含多个类,但只能有一个公开类(public class),其余的类可以是非公开类,用于辅助主类。 2. Java中没有`goto`关键字,它被设计为避免复杂的跳转结构,鼓励使用更清晰的控制流语句。 3. `&`和`&&`都是逻辑运算符,`&`始终会计算两边的操作数,而`&&`(短路与)只有当左边操作数为真时才会计算右边。 4. 要跳出多重嵌套循环,可以使用`break`语句配合标签(label)来指定跳出的循环层级。 5. `switch`语句不能直接作用于`byte`、`long`或`String`类型,但在Java 7及以上版本,`switch`支持`byte`、`short`、`char`作为枚举类型处理,Java 7后还支持`String`。 6. 在`short s1=1;`的语境下,`s1=s1+1;`会引发编译错误,因为整数运算结果为`int`,需要显式转换回`short`。而`s1+=1;`会自动进行类型转换。 7. `char`型变量可以存储一个中文汉字,因为UTF-16编码中,一个中文字符占据两个字节。 8. 计算2乘以8最有效率的方法是直接写`2 * 8`。 9. 设计一个一百亿的计算器要考虑数值溢出问题,可能需要使用大数运算库或者高精度数据类型。 10. `final`修饰变量时,变量的引用不可变,意味着不能指向其他对象,但引用的对象内容可以变。 11. `==`比较的是两个对象的引用,而`equals`方法比较的是两个对象的内容。对于基本类型和字符串,它们的行为有所不同。 12. 静态变量属于类,实例变量属于对象。静态变量在类加载时初始化,而实例变量在创建对象时初始化。 13. 不可以从`static`方法内部直接调用非`static`方法,因为`static`方法不依赖于对象实例。 14. `Integer`是包装类,`int`是原始数据类型。`Integer`提供了更多功能,如缓存、比较等,而`int`是基本的数值类型。 15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 16. 未给出代码,无法分析不妥之处。 17. `public`、`private`、`protected`分别代表公共、私有和受保护的访问权限。默认情况下,类成员只对同一包内的类可见。 18. `Overload`是重载,允许方法名相同但参数列表不同;`Override`是覆盖,子类重写父类方法。重载方法不改变返回值类型。 19. 构造器不能被覆盖,因为构造器不遵循继承规则。 20. 接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体类,但抽象类中的`main`方法必须是非静态的。 21. `clone()`方法通常会包含`super.clone()`以克隆当前对象。 22. 面向对象的特征包括封装、继承、多态。 23. Java中多态通过方法的重写(Override)和向上转型(Upcasting)实现。 24. `abstract class`可以包含抽象方法和非抽象方法,而`interface`只能包含抽象方法。`abstract class`可以有属性和构造器,`interface`则不能。 25. 抽象方法不能同时是`static`、`native`或`synchronized`,因为这些特性与抽象方法的定义不兼容。 26. 内部类是嵌套在另一个类内部的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。静态嵌套类不持有外部类的引用,而内部类则可以。 27. 内部类可以直接引用外部类的成员,包括私有成员,但不能引用静态成员(除非通过外部类实例引用)。 28. 匿名内部类可以继承一个类或实现一个接口,但没有名称,常用于快速创建临时的类实例。