2010年Java面试必看:基础到高级知识点全梳理

需积分: 3 6 下载量 55 浏览量 更新于2024-07-31 收藏 657KB DOC 举报
"Java面试题2010年最新汇总,涵盖了Java基础知识、语法特性、类与对象、接口、多态、内部类等多个方面的问题,旨在帮助求职者准备Java编程的面试。" 以下是对给定文件中部分Java面试题的详细解答: 1. 一个".java"源文件中可以包含多个类,但只能有一个公共类(public class),其他的类可以是非公共类(如private或默认访问级别)。 2. Java没有goto语句,这是为了保持代码的结构清晰和可读性。 3. &和&&的主要区别在于短路逻辑。&是逻辑与运算符,无论条件是否为真都会执行两边的表达式;而&&也是逻辑与,但只有当左侧表达式为真时才会执行右侧表达式。 4. 要跳出多重嵌套循环,可以使用label语句配合break,如`outer: for {...} inner: for {...} { if (condition) break outer; }`。 5. switch语句不能作用于byte,因为Java 7之前switch只支持byte, char, short, int和枚举类型,但Java 7以后可以用于String。 6. 对于short s1=1; s1=s1+1; 会引发编译错误,因为结果会自动提升为int。而s1+=1则会被编译器自动处理为short类型的加法。 7. char型变量可以存储一个中文汉字,因为一个中文汉字在Unicode编码中通常占两个字节,Java的char类型正好是16位,可以表示大部分Unicode字符。 8. 最有效率的方式计算2乘以8是直接赋值:`int result = 2 * 8;` 9. 设计一个一百亿的计算器要考虑数据类型的选择,避免整数溢出,可能需要使用BigInteger类。 10. 使用final关键字修饰变量时,引用本身不能改变,但引用的对象是可以改变的,除非对象也是final的。 11. "=="比较的是两个变量的引用,而equals方法比较的是两个对象的内容。对于基本类型,"=="就是内容比较;对于对象,需要重写equals方法来实现内容比较。 12. 静态变量属于类,而实例变量属于类的实例。静态变量可以被类的所有实例共享,而实例变量是每个实例独有的。 13. 不能从一个静态方法内部直接调用非静态方法,因为静态方法属于类,而非静态方法属于实例。 14. Integer是int的包装类,它们一个是对象,一个是基本类型。Integer对象的比较默认使用equals方法,而int之间的比较使用"=="。 15. Math.round(11.5)等于12,Math.round(-11.5)等于-11。 16. 下面的代码可能存在类型不匹配或者编译错误,具体要看缺失的代码内容。 17. public表示全局可访问,private表示仅限本类访问,protected表示本包和子类可访问,无修饰符的表示同包内可访问。 18. Overload(重载)允许方法有不同的参数列表,返回类型不能作为重载的依据。Override(覆盖)是指子类重写父类的同名方法,必须保持方法签名一致。 19. 构造器不能被override,但可以被重载。 20. 接口可以继承接口。抽象类可以实现接口,但抽象类不能继承具体类。抽象类中可以有静态的main方法,但不会作为程序入口。 21. 实现克隆时,通常会调用super.clone()来创建一个新的对象并复制原有对象的内容。 22. 面向对象的特征包括封装、继承、多态。 23. Java通过方法的重写(Override)和多态性来实现多态。 24. abstract class和interface都可以作为抽象类,但interface中所有方法默认都是抽象的,不能有实现;而abstract class可以包含非抽象方法。 25. abstract method不能同时是static,因为静态方法属于类,而抽象方法属于类的实例。也不能同时是native,因为native方法的实现是在C/C++中。同样,也不能同时是synchronized,因为同步方法不能是抽象的。 26. 内部类是定义在一个类内部的类,可以分为非静态内部类(InnerClass)和静态内部类(StaticNestedClass)。非静态内部类可以直接访问外部类的成员,而静态内部类只能访问外部类的静态成员。 27. 内部类可以引用它的包含类的成员,但不能引用包含类的局部变量,除非这些变量是final的。 28. AnonymousInnerClass(匿名内部类)是在没有显式类名称的情况下定义的类,常用于简化代码和实现回调。