Java面试经典问答解析

需积分: 33 2 下载量 45 浏览量 更新于2024-07-21 收藏 2.14MB PDF 举报
"这是一份关于Java面试常见问题的简答列表,涵盖了从基础语法到高级特性的多个知识点,旨在帮助求职者准备Java程序员的面试。" 1. Java源文件可以包含多个类,但只能有一个公开的顶级类(public class),其他类可以是非公开的或内部类。 2. Java语言中没有goto语句,它鼓励使用结构化编程,通过break、continue和return来控制流程。 3. &是位运算符,表示按位与,而&&是逻辑运算符,表示逻辑与。在布尔表达式中,&&会进行短路计算,即如果第一个操作数为false,就不会计算第二个操作数。 4. 要跳出多重嵌套循环,可以使用label + break语句,如`outer: for (...) { inner: for (...) { ... if (条件) break outer; } }`。 5. switch语句不能直接作用于byte,因为Java 7之前switch仅支持byte、char、short、int和枚举类型。从Java 7开始,它可以用于字符串(String)。 6. 对于short变量,s1=s1+1可能会导致数据溢出,因为结果会被自动提升为int类型。而s1+=1会自动处理类型转换,防止溢出。 7. char型变量可以存储一个中文汉字,因为UTF-16编码下,一个中文字符占两个字节。 8. 计算2乘以8最有效率的方式是使用位移操作:`int result = 2 << 3;`。 9. 设计一个一百亿的计算器,需要考虑大数运算,可以使用BigInteger类来处理超过int或long范围的数值。 10. 使用final修饰变量,意味着该变量一旦赋值后就不能再改变。对于引用类型,final变量的引用不能改变,但引用的对象状态可以改变。 11. "=="比较的是两个变量的引用,而equals()方法通常比较的是对象的内容。对于基本类型,"=="和equals()效果相同。 12. 静态变量属于类,随着类的加载而存在,与对象无关;实例变量属于对象,每个对象有自己的副本。 13. 不可以从static方法内部直接调用非static方法,因为static方法在没有对象的情况下也可以调用,而非static方法需要对象才能调用。 14. Integer是int的包装类,它们之间可以相互转换。Integer在一定范围内缓存了常量,直接比较效率更高;int是原始类型,处理速度更快。 15. Math.round(11.5)等于12,Math.round(-11.5)等于-11,round方法四舍五入。 16. 代码不妥之处可能涉及变量作用域、异常处理、资源关闭等问题,具体需查看代码内容。 17. public表示全局访问,private表示私有,protected表示包内及子类访问,不写默认为包内访问。 18. Overload是重载,可以改变参数列表,但返回类型不变;Override是重写,必须保持方法签名一致。 19. 构造器不能被override,但可以重载。 20. 接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体类,抽象类中可以有静态的main方法,但无法直接运行。 21. 实现clone()方法时,通常会包含`super.clone()`来创建一个对象的副本。 22. 面向对象的特征包括封装、继承和多态。 23. Java中实现多态主要依靠方法的重写(Override)和接口的实现(Implements)。 24. abstract class可以包含方法实现,而interface只能声明方法,不能包含实现。抽象类可以有非抽象方法,接口的所有方法默认都是抽象的。 25. abstract方法不能是static、native或synchronized,因为这些特性与抽象方法的定义相冲突。 26. 内部类是嵌套在另一个类中的类,分为静态内部类(Static Nested Class)和非静态内部类(Inner Class)。静态内部类不需要外部类的实例就能创建,而Inner Class需要。 27. 内部类可以引用包含类的成员,包括私有成员,但不能引用静态成员,除非使用外部类的引用。 28. A类的内部类B可以访问A的所有成员,包括私有成员,但外部类A不能直接访问B的私有成员,除非通过内部类的实例。 这个列表提供了全面的Java面试问题,涵盖了基础到进阶的Java知识,对于准备面试的开发者来说非常有价值。