Java面试必备:基础题集

需积分: 1 1 下载量 138 浏览量 更新于2024-07-18 收藏 1.39MB PDF 举报
"这篇文档包含了Java基础面试题,适合初级Java开发者进行面试准备。文档涵盖了Java语言的基础知识,包括语法特性、数据类型、类和对象、接口、内存管理等多个方面,旨在帮助读者应对常见的Java面试问题。" 1. 一个.java源文件中可以包含多个类,但只能有一个公开类(public class),其他类可以是非公开的,作为主类的辅助类。 2. Java语言中没有goto语句,它遵循结构化编程原则,鼓励使用流程控制语句如if、while、for等。 3. &是位运算符,而&&是逻辑运算符。&会执行两边的操作,即使左边的表达式为假;&&则是短路运算符,如果左边为假,则不会执行右边的表达式。 4. 在Java中,跳出多重嵌套循环可以使用label + break语句,例如:`outer: for(...) { ... inner: for(...) { ... if(condition) break outer; } }` 5. switch语句不能作用于byte类型,但Java 7以后可以作用于char和枚举类型,不能直接作用于long和String,但可以通过包装类Long和String实现。 6. shorts1 = 1; s1 = s1 + 1; 这里的s1 + 1会自动提升为int类型,赋值回short会抛出编译错误。而s1 += 1;是复合赋值运算符,会自动处理类型转换。 7. char型变量可以存储一个中文汉字,因为UTF-16编码每个字符通常占用两个字节。 8. 最有效率计算2乘以8的方法是直接写`2 * 8`,因为Java会自动优化。 9. 设计一个一百亿的计算器,要考虑大整数运算,可以使用BigInteger类。 10. 使用final关键字修饰变量时,变量的引用不能改变,但如果是对象引用,对象的内容可以改变。 11. "=="比较的是对象的引用,而equals方法比较的是对象的内容。对于基本类型,两者行为相同;对于对象,"=="比较的是内存地址,equals比较的是内容。 12. 静态变量属于类,而实例变量属于对象。静态变量由所有类的实例共享,实例变量是每个对象独有的。 13. 不可以从一个static方法内部直接调用非static方法,因为static方法不依赖于任何对象,而非static方法需要对象才能调用。 14. Integer是int的封装类,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. 实现克隆时,通常会调用super.clone()来创建对象副本。 22. 面向对象的特征包括封装、继承、多态。 23. Java通过方法重写和接口实现来实现多态。 24. abstract class可以包含方法实现,可以有构造器,而interface只能声明方法,不能包含实现。接口用于定义行为规范,抽象类则用于基类模板。 25. abstract method不能同时是static、native或synchronized,因为这些特性与抽象方法的定义相冲突。 26. 内部类是定义在另一个类内部的类,分为静态内部类(StaticNestedClass)和非静态内部类(InnerClass)。静态内部类可以直接通过类名访问,非静态内部类需要外部类实例来访问。 27. 内部类可以引用它的包含类的所有成员,包括私有成员,但静态内部类不能直接访问非静态的成员。 28. 匿名内部类可以继承一个类或实现一个接口,无需定义名称,常用于一次性使用的简洁实现。