Java面试经典问题集锦

需积分: 6 0 下载量 79 浏览量 更新于2024-07-24 收藏 590KB DOC 举报
"java面试宝典" Java面试宝典是一份针对Java程序员的面试准备资料,涵盖了从基础到高级的各种Java编程知识。以下是其中涉及到的一些重要知识点的详细解释: 1. **Java源文件与类的关系**:一个.java源文件可以包含多个类,但只能有一个公开的(public)类,其他类可以是非公开的。 2. **goto关键字**:Java中没有goto关键字,它通常用于流程控制,但在Java中可以通过break和continue实现类似功能。 3. **&与&&的区别**:&是逻辑与运算符,无论两侧表达式是否为真都会进行计算;&&也是逻辑与,但只有当左侧表达式为真时才会计算右侧。 4. **跳出多重嵌套循环**:使用break语句可以跳出最近的一个循环,而标签(label)配合break可以跳出特定的循环。 5. **switch语句的适用范围**:switch可以作用于byte、char、short和int,以及枚举类型(enum),Java 7以后还可以用于字符串(String)。 6. **short变量的加法**:直接使用`s1=s1+1`会导致数据溢出,因为会先转换成int再进行计算。而`s1+=1`则会直接进行short范围内的加法。 7. **char类型与中文字符**:char类型可以存储单个Unicode字符,包括中文汉字,因为它占据两个字节。 8. **效率计算2乘以8**:使用位运算符`2 << 3`是最快的方法,因为位移运算通常比乘法更快。 9. **设计大数计算器**:要处理大数,可以使用BigInteger类,它可以进行任意大小的整数运算。 10. **final关键字**:final修饰的变量,其引用一旦赋值后不能改变,但对于对象,final只能保证引用不变,对象内部的状态仍可能改变。 11. **"=="与equals的区别**:"=="比较的是对象的引用,而equals方法默认比较的是对象的内容,但可以被重写。 12. **静态变量与实例变量**:静态变量属于类,所有类的实例共享;实例变量属于对象,每个对象有自己的副本。 13. **静态方法与非静态方法**:不能从静态方法内部直接调用非静态方法,因为非静态方法依赖于实例对象。 14. **Integer与int**:int是原始类型,而Integer是其包装类,Integer对象在一定范围内会有缓存,避免频繁创建。 15. **Math.round方法**:Math.round(11.5)等于12,Math.round(-11.5)等于-11。 16. **代码不妥之处**:未给出具体代码,但常见问题可能是缺少分号、类型不匹配、未初始化变量等。 17. **访问修饰符的区别**:public可被所有类访问,private仅在本类内访问,protected允许子类和同一包内访问,无修饰符的默认为包访问权限。 18. **Overload与Override**:Overload是方法重载,可以改变参数列表,但不能改变返回类型;Override是方法重写,必须保持返回类型和方法签名一致。 19. **构造器不能被覆盖**:构造器不能被重写(override),但可以被重载(overload)。 20. **接口与抽象类**:接口可以继承接口,抽象类可以实现接口,但不能继承具体类;抽象类可以有静态的main方法,但通常不推荐。 21. **clone方法**:在编写clone方法时,通常会调用super.clone()来创建一个新对象。 22. **面向对象的特征**:封装、继承、多态是面向对象的三大特征。 23. **Java中的多态**:通过方法重写(Override)和父类引用指向子类对象实现多态。 24. **abstractclass与interface的区别**:抽象类可以有方法实现,可以有非抽象方法,可以有字段;接口只能定义方法,没有方法实现,字段默认为public static final。 25. **abstract、static、native、synchronized的组合**:abstract不能与static和final一起使用,因为它们代表不同的概念;abstract不能与native一起使用,因为抽象方法没有具体实现;但可以与synchronized一起使用。 26. **内部类**:内部类是嵌套在另一个类中的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。静态嵌套类不依赖于外部类的实例,而内部类需要外部类的实例。 27. **内部类与外部类的成员**:内部类可以直接访问外部类的所有成员,包括私有成员,但外部类无法直接访问内部类的私有成员。 28. **匿名内部类**:匿名内部类可以继承其他类或实现接口,常用于简洁地创建一次性使用的类实例。 以上只是Java面试宝典中的一部分内容,实际上,Java面试中还可能涵盖更多主题,如异常处理、集合框架、线程、IO流、网络编程、设计模式等。准备面试时,需要全面复习这些知识,并结合实际项目经验进行深入理解和应用。