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

需积分: 10 9 下载量 76 浏览量 更新于2024-07-30 收藏 1.09MB DOC 举报
"Java面试宝典是一份针对Java软件开发面试者的复习资料,旨在帮助无经验的求职者在笔试和面试中取得成功。这份宝典覆盖了广泛的Java基础知识,包括语法、逻辑、编程技巧和面向对象概念。它强调在答题时不仅要给出正确答案,还要展示个人的理解和思考过程,以此来体现自己的专业知识和解决问题的能力。面试者应尽早开始学习并逐步积累,不要畏惧面试中的模糊问题,要有信心与面试官平等对话。对于应届生的薪资期望,要根据自身能力和实践经验来合理定位。" 以下是对部分知识点的详细说明: 1. **Java源文件与类的关系**:一个`.java`源文件可以包含多个类,但只能有一个公共类(public class),且该公共类的名称需与文件名相同。 2. **Java中的goto**:Java语言中没有`goto`关键字,这与C/C++等其他一些语言不同。 3. **&和&&的区别**:`&`是位运算符,用于按位进行与操作;在布尔逻辑中,`&`运算符会始终计算两边的操作数,即使左侧已知结果为假。`&&`是短路逻辑运算符,当左侧表达式为假时,不会计算右侧表达式。 4. **跳出多重嵌套循环**:可以使用`break`语句配合标签(label)来跳出多重循环,例如:`outer: while {...} inner: while {...} break outer;`。 5. **switch语句的使用**:在Java 7之前,switch不能用于`byte`、`char`、`short`和`int`之外的数据类型。自Java 7起,支持`String`类型的switch。 6. **short变量的加法**:直接赋值`short s1 = 1; s1 = s1 + 1;`会触发类型提升,可能导致编译错误,而`s1 += 1;`则会自动处理类型提升。 7. **char型变量与中文汉字**:char变量可以存储单个Unicode字符,因此可以存储中文汉字,但必须确保编码环境支持。 8. **效率计算2乘以8**:最有效率的方式是直接赋值:`int result = 2 << 3;`,利用位移运算。 9. **设计大数计算器**:在Java中,可以使用`BigInteger`类来处理大数运算。 10. **final关键字**:final修饰的变量其引用不可变,即不能指向其他对象,但引用的对象内容可以变。 11. **"=="与equals的区别**:"=="比较的是对象的引用,而`equals`方法(默认比较引用,但可重写)通常比较对象的内容。 12. **静态变量与实例变量**:静态变量属于类,所有类的实例共享同一个静态变量;实例变量属于每个对象的实例,每个实例有自己的副本。 13. **从静态方法调用非静态方法**:不允许直接从静态方法内部调用非静态方法,因为静态方法属于类,而非静态方法属于对象。 14. **Integer与int**:Integer是int的包装类,它们之间有自动装箱拆箱转换。Integer对象占用更多内存,而int是基本类型,更高效。 15. **Math.round方法**:`Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 16. **代码不妥之处**:具体代码未给出,无法分析。 17. **作用域public,private,protected和默认的区别**:public对所有类可见,private只在当前类可见,protected对同一包内和子类可见,不写时默认为包内可见。 18. **Overload与Override**:Overload是方法名相同但参数列表不同的方法;Override是子类重写父类的方法。Overloaded方法不能改变返回值类型。 19. **构造器Constructor不能被override**:构造器不能被重写,但可以被重载。 20. **接口与接口继承,抽象类与接口**:接口可以继承接口;抽象类可以实现接口;抽象类可以继承具体类,但具体类不能继承抽象类。抽象类中的main方法可以是静态的。 21. **clone()方法**:通常在重写`clone()`时,需要调用`super.clone()`来创建对象的副本。 22. **面向对象的特征**:封装、继承、多态。 23. **Java中的多态**:通过接口或抽象类实现,使得不同类的对象可以使用相同的接口。 24. **abstractclass和interface**:抽象类可以有实现方法,可以有构造器,可以有实例变量;接口只有方法声明,没有实现,不能有构造器和实例变量。 25. **abstract与static,native,synchronized**:抽象方法不能同时是static或native,也不能是synchronized。 26. **内部类与静态嵌套类**:内部类可以直接访问外部类的成员,包括私有成员;静态嵌套类不能直接访问外部类的非静态成员,但可以通过实例化外部类对象来访问。 27. **内部类引用外部类成员**:内部类可以引用外部类的所有成员,包括私有成员,但静态内部类不能直接访问外部类的非静态成员,需要通过外部类实例。 以上只是部分内容的解析,整个面试宝典涵盖的知识点远不止这些,需要深入学习和理解。