Java面试必备知识点详解

需积分: 0 0 下载量 108 浏览量 更新于2024-07-27 收藏 542KB DOC 举报
"Java面试宝典是一份涵盖了各种Java编程面试常见问题的资料,主要针对Java基础、语法特性、面向对象、多态、接口、抽象类等核心知识点进行深入探讨,帮助求职者准备面试。这份资料包含了从基础到高级的各种问题,如Java中的数据类型、运算符、控制流、类和对象、继承、接口、异常处理、内存管理等多个方面。" 1. Java源文件可以包含多个类,但只能有一个公开类(public class),其他类可以是非公开的(非public)。 2. Java没有`goto`关键字,它使用流程控制结构如`if`、`switch`、`while`和`break`来改变程序执行路径。 3. `&`是位运算符,用于按位与操作;`&&`是逻辑运算符,用于逻辑与操作。`&&`具有短路特性,如果第一个操作数为假,不会评估第二个操作数。 4. 在Java中,可以使用`break`或`return`语句跳出多重嵌套循环。 5. `switch`语句不能直接作用于`byte`,但可以通过强制类型转换实现;不能作用于`long`,目前仅支持`byte`, `short`, `char`, `int`以及枚举类型;Java 7及以后版本支持字符串`String`。 6. 对于`short s1 = 1;`,直接赋值`s1 = s1 + 1;`会导致类型提升,需要强制转换。而`s1 += 1;`会自动处理类型提升,无需额外转换。 7. `char`型变量可以存储单个中文字符,因为UTF-16编码每个中文字符占用两个字节。 8. 计算2乘以8的最有效率方式是`2 << 3`,使用位左移运算符。 9. 设计一个能处理一百亿数值的计算器要考虑高精度计算,可以使用BigInteger类。 10. `final`关键字修饰变量时,意味着引用一旦赋值后不能改变,但引用的对象内容可以改变,除非对象本身也是`final`的。 11. `==`比较的是对象的引用,而`equals()`方法比较的是对象的内容。对于基本类型,两者行为相似,但对于对象,`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. 构造器`Constructor`不能被重写(override),但可以重载。 20. 接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类(concrete class),抽象类可以有静态的`main`方法。 21. `clone()`方法通常会有一行代码`super.clone()`,用于实现对象的浅复制。 22. 面向对象的特征包括封装、继承、多态。 23. Java实现多态的机制主要是通过接口和继承,以及方法的重写和重载。 24. `abstract class`可以包含抽象方法和非抽象方法,而`interface`只能包含抽象方法。抽象类可以有实例变量,接口则不能。 25. `abstract`方法不能是`static`、`native`或`synchronized`,因为这些特性与抽象方法的定义不符。 26. 内部类是定义在另一个类内部的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。静态嵌套类不持有外部类的引用,可以直接创建;非静态嵌套类则需要外部类实例才能创建。 27. 内部类可以访问其包含类的所有成员,包括私有成员,但非静态内部类不能直接访问静态成员,需要通过外部类实例。 28. 匿名内部类是不声明名称的类,通常用于简化代码,尤其是实现接口或继承类时。