"这是一份Java面试复习资料,涵盖了Java基础知识,适合正在找工作的人学习。"
在这份"Java面试宝典"中,包含了大量Java语言的核心知识点,以下是其中一些问题及其解析:
1. **Java源文件与类的关系**:一个.java源文件可以包含多个类,但只能有一个公共类(public class),且该公共类的名称必须与文件名相同。
2. **goto关键字**:Java中没有goto关键字,它是一种流程控制语句,但在Java中被摒弃,使用break、continue和return来替代。
3. **&和&&的区别**:&是位运算符,&&是逻辑运算符。前者总是会执行两边的操作,而后者(短路运算符)如果左侧为假,则不会执行右侧。
4. **跳出多重嵌套循环**:使用`break label;`结构,定义一个标签(label)并配合break可以跳出多重循环。
5. **switch语句**:switch不能直接作用于byte,但可以通过强制类型转换;不能直接作用于long和String,Java 7以后支持字符串switch。
6. **short变量与运算**:直接赋值`s1=s1+1`会导致数据溢出,因为+1操作会提升为int类型;而`s1+=1`会自动处理类型转换。
7. **char与中文字符**:char可以存储单个中文字符,因为它在Unicode编码中占两个字节。
8. **效率计算2*8**:最有效率的方式是直接使用`2 * 8`。
9. **设计大数计算器**:设计一个能处理一百亿级别数字的计算器要考虑效率和精度,可能需要使用BigInteger类。
10. **final修饰变量**:final修饰的变量,其引用一旦初始化后不可改变,意味着不能指向其他对象,但引用的对象内容可以变。
11. **"=="与equals方法**:"=="比较的是对象的引用,而equals方法通常用于比较对象的内容。
12. **静态变量与实例变量**:静态变量属于类,所有实例共享;实例变量属于每个对象,每个实例有自己的副本。
13. **静态方法与非静态方法**:静态方法不能直接调用非静态方法,因为静态方法属于类,而非静态方法属于对象。
14. **Integer与int**:Integer是int的包装类,涉及到对象的创建和垃圾回收;int是原始类型,更高效。
15. **Math.round**:Math.round(11.5)等于12,Math.round(-11.5)等于-11。
16. **代码不妥之处**:没有给出具体代码,无法分析。通常要注意变量定义、异常处理、边界条件等问题。
17. **访问修饰符的区别**:public、private、protected和默认(包级私有)分别代表全局、类内、子类及同包可见。
18. **重载与覆盖**:重载是同一类中方法名相同但参数列表不同的方法;覆盖发生在子类中,返回值和参数列表必须相同。重载不改变返回值类型。
19. **构造器是否可被override**:构造器不能被重写(override),但可以被重载。
20. **接口与抽象类**:接口可以继承接口,抽象类可以实现接口,但不能继承具体类;静态main方法不属于任何对象,因此不能在抽象类中声明为静态。
21. **clone()方法**:通常在实现clone()时,会包含`super.clone()`以创建对象的浅复制。
22. **面向对象特征**:封装、继承、多态是面向对象的三大特征。
23. **Java多态机制**:通过方法的重写和接口的实现,以及父类引用指向子类对象,实现多态。
24. **abstractclass与interface**:抽象类可以有方法实现,可以有构造器,可以有非抽象方法;接口只能有抽象方法和常量,不能有实现。
25. **abstract、static、native、synchronized**:抽象方法不能是static或native,也不能是synchronized,因为它们的性质与抽象方法相冲突。
26. **内部类**:内部类是定义在另一个类中的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(InnerClass)。静态嵌套类不持有外部类的引用,而内部类则可以直接访问外部类的成员。
27. **内部类与外部类成员**:内部类可以引用外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员,除非是友元类。
28. **A...**:这里省略了问题,但通常会涉及类的继承、接口实现、访问权限等概念。
这些知识点都是Java面试中常见的问题,理解和掌握它们对于Java开发者来说至关重要。