Java面试深度解析:基础篇

需积分: 3 2 下载量 7 浏览量 更新于2024-07-25 收藏 728KB DOC 举报
"Java面试宝典2012版包含了丰富的Java基础知识题目,涵盖了类与文件结构、关键字使用、运算符、循环控制、方法重载与覆盖、访问控制、多态性、抽象类与接口、内部类等多个核心概念。" 本文将详细解答这些面试题目中的关键知识点: 1. 一个".java"源文件可以包含多个类,但只能有一个公共类(public class),且文件名必须与这个公共类的名称相同。其他非公共类可以在同一文件中定义,但不会作为主类来执行。 2. Java中没有`goto`关键字。这与C/C++不同,Java推崇更安全、结构化的编程方式。 3. `&`和`&&`的主要区别在于短路逻辑。`&&`只有在左侧表达式为真时才会计算右侧,而`&`则总是计算两边的表达式。 4. 跳出多重嵌套循环,可以使用`break`配合标签(label)来实现:`label: for(...) { ... break label; }`。 5. `switch`语句可以作用于`byte`, `char`, `short`, `int`以及枚举类型,但在Java 7之后,也可以用于`String`类型。 6. `short s1 = 1; s1 = s1 + 1;`会因类型提升导致编译错误,因为`1`是`int`类型,加法结果也是`int`。而`s1 += 1;`会自动转换回`short`类型。 7. `char`型变量可以存储单个Unicode字符,包括中文汉字,因为它占据两个字节。 8. 计算2乘以8最有效率的方法是直接使用`*`运算符:`2 * 8`。 9. 设计一个能处理一百亿的计算器,需考虑大整数运算,可能涉及BigInteger类。 10. `final`修饰的变量,其引用一旦初始化后不可改变,但如果是对象,对象的内容仍可改变,除非对象本身也是`final`的。 11. `==`比较的是对象的引用,而`equals()`方法通常用于比较对象的内容。对于基本类型,`==`直接比较数值;对于对象,`==`比较内存地址,`equals()`比较内容(如果未重写,默认也是比较地址)。 12. 静态变量属于类,与类的实例无关,所有实例共享;实例变量属于特定的实例,每个实例有自己的副本。 13. 不能从`static`方法内部直接调用非`static`方法,因为`static`方法不依赖于实例对象,而非`static`方法依赖实例对象。 14. `Integer`是`int`的包装类,两者之间可以通过自动装箱和拆箱进行转换。`Integer`提供了额外的功能,如缓存小范围的整数对象。 15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。`round`方法四舍五入到最接近的整数。 16. 对于代码的问题,未提供具体代码,无法分析。 17. `public`表示全局可访问,`private`表示仅在本类内访问,`protected`表示在本类及子类和同一包内访问,无修饰词则默认为包访问。 18. 方法重载(Overload)允许同一类中有多个同名但参数列表不同的方法,返回类型不影响重载。方法覆盖(Override)发生在子类中,要求子类方法与父类方法同名同参数,并且访问权限不得更低。 19. 构造器(Constructor)不能被覆盖(Override),但可以被重载(Overload)。 20. 接口可以继承接口,抽象类可以实现接口,抽象类也可以继承具体类。抽象类中可以有静态的`main`方法,但不能作为程序的入口点。 21. 写`clone()`方法时,通常会包含一行`super.clone()`,以调用父类的`clone()`方法获取浅拷贝。 22. 面向对象的特征主要包括封装、继承、多态和抽象。 23. Java通过接口和方法的重写实现多态,即一个接口或父类引用指向不同实现类的对象,调用相同的接口方法时,表现出不同的行为。 24. 抽象类可以包含抽象方法和非抽象方法,而接口只有抽象方法,没有实现。抽象类可以有属性,接口不能有。类可以继承一个抽象类并实现多个接口。 25. 抽象方法不能同时是`static`, `native`或`synchronized`,因为它们与抽象方法的定义不兼容。 26. 内部类是定义在另一个类内部的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。静态嵌套类不持有外部类的引用,可以独立存在;非静态嵌套类拥有对外部类的隐含引用,需要外部类实例才能创建。 27. 内部类可以引用其包含类的所有成员,包括私有成员,但访问非静态成员需要通过外部类的实例。 28. 匿名内部类可以直接实现接口或继承类,但没有类名,通常用在需要一次性使用的场景。 29. `super.getClass()`返回对象的实际类型,对于匿名内部类,它会返回内部类的Class对象。 30. `String`是对象,不是一个基本数据类型。基本数据类型包括`byte`, `short`, `int`, `long`, `float`, `double`, `char`, `boolean`。 以上内容详细解释了Java面试中常见的基础问题,有助于深入理解Java语言的核心概念。