Java面试必备:基础篇重点知识点解析

需积分: 22 4 下载量 68 浏览量 更新于2024-07-15 收藏 1.33MB PDF 举报
"这份文档是《Java面试宝典java基础大全》,包含了丰富的Java基础知识,旨在帮助准备面试的开发者梳理和掌握Java核心技术。文档涵盖了从语言基础到高级特性,包括类与对象、数据类型、运算符、流程控制、方法、变量等方面的问题,同时也涉及了Java特性和设计模式。" 1. Java源文件可以包含多个类,但只能有一个公开类(public class),其余类可以是非公开的(non-public)或者内部类。 2. Java中没有`goto`关键字,它是一种用于无条件跳转的控制结构,在Java中通常通过`break`或`continue`来实现类似功能。 3. `&`和`&&`都是逻辑运算符,`&`始终会计算两边的操作数,而`&&`(短路与)只有当第一个操作数为真时才会计算第二个操作数。在布尔表达式中,`&&`通常用于优化性能。 4. 要跳出多重嵌套循环,可以使用`break`语句配合标签(label)来实现。 5. `switch`语句可以作用于`byte`, `char`, `short`, `int`, `枚举类型`以及`java.lang.String`。自Java 7开始,支持字符串`String`。 6. 对于`short s1 = 1; s1 = s1 + 1;`,因为`+1`的结果是`int`类型,需要强制转换为`short`才能赋值给`s1`。而`s1 += 1;`是编译器自动处理类型转换,所以无需显式转换。 7. `char`型变量可以存储中文汉字,因为Java的`char`类型占两个字节,可以表示Unicode字符集中的大部分字符。 8. 计算2乘以8最有效率的方式是直接使用`2 << 3`,这是位左移运算,相当于乘以2的3次方。 9. 设计一个一百亿的计算器要考虑数值范围、精度和算法效率,可以使用大数运算库如BigInteger。 10. `final`关键字修饰的变量,其引用一旦初始化后不能改变,但对于对象来说,如果对象的属性可以修改。 11. `==`比较的是对象的引用,而`equals()`方法比较的是对象的内容。对于基本类型,两者行为相同,对于对象,`equals()`需要重写来实现特定的比较逻辑。 12. 静态变量属于类,实例变量属于对象,静态变量在类加载时分配内存,实例变量在对象创建时分配内存。 13. 不能从`static`方法内部直接调用非`static`方法,因为`static`方法不依赖于任何对象实例,而非`static`方法需要对象实例。 14. `Integer`是`int`的包装类,`Integer`对象封装了`int`值,两者之间可以自动装箱和拆箱。`Integer`提供了额外的功能,如比较、缓存等。 15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11,`round`方法四舍五入到最接近的整数。 16. 代码不妥之处可能涉及到变量作用域、类型转换、异常处理等方面,具体问题需查看代码内容。 17. `public`、`private`、`protected`以及默认(package-private)的区别在于访问权限:`public`可在任何地方访问,`private`仅限本类,`protected`在同一包内及子类中,默认只在同包内。 18. `Overload`是重载,允许同一类中有多个同名但参数列表不同的方法;`Override`是重写,子类方法覆盖父类方法,方法名、返回类型和参数列表必须完全一致。 19. 构造器不能被`override`,但可以被`overload`。 20. 接口可以继承接口,抽象类可以实现接口,但抽象类不能直接继承具体类,除非使用Java 8的默认方法。抽象类中可以有静态的`main`方法,但不会作为程序入口。 21. 在实现`clone()`方法时,通常会有一行`super.clone()`,用于复制当前对象。 22. 面向对象的特征包括封装、继承、多态。 23. Java中实现多态主要依靠方法的重写(`Override`)和接口的实现,以及对象的引用类型。 24. `abstract class`可以有方法实现,可以有非抽象方法,而`interface`只能声明方法,不能有实现。`abstract class`可以有构造器,字段和初始化块,`interface`则没有。 25. `abstract`方法不能是`static`、`native`或`synchronized`,因为这些特性与抽象方法的定义相冲突。 26. 内部类(Inner Class)是定义在另一个类内部的类,分为静态内部类(Static Nested Class)和非静态内部类。静态内部类不依赖于外部类的实例,而非静态内部类需要外部类的实例才能创建。 27. 内部类可以访问外部类的所有成员,包括私有成员。静态内部类与非静态内部类的主要区别在于静态内部类不持有对外部类的引用,而非静态内部类则有。 这份文档详尽地涵盖了Java基础的各个方面,是准备面试和巩固Java知识的好资料。