Java编程基础复习要点与面试题解析

需积分: 7 0 下载量 151 浏览量 更新于2024-07-28 收藏 559KB DOC 举报
"这是针对2011版Java复习的一份文档,涵盖了Java基础知识,包括语法、数据类型、类和对象、多态性、接口、内部类等核心概念。" 1. 一个".java"源文件中可以包含多个类,但只能有一个公共类(public class),其他非公共类没有限制。 2. Java中没有`goto`语句,它被设计为避免无尽的跳转导致的复杂性。 3. `&`是位运算符,而`&&`是逻辑运算符。位运算符用于处理二进制位,逻辑运算符用于条件判断,短路特性使得`&&`在左侧表达式为假时,不会评估右侧表达式。 4. 要跳出多重嵌套循环,可以使用`break`配合标签(label)来实现。 5. `switch`语句不能作用于`long`类型,但在Java 7之后可以作用于`byte`, `short`, `char`以及枚举类型。Java 14之后,`switch`也可以作用于`String`类型。 6. 在`short s1 = 1`的情况下,`s1 = s1 + 1`会引发类型提升错误,因为加法操作结果是`int`类型。而`s1 += 1`会自动转换回`short`类型。 7. `char`型变量可以存储单个Unicode字符,因此可以存储中文汉字,因为中文汉字在Unicode编码中占据一个或两个字符。 8. 计算2乘以8最有效率的方式是直接使用`2 * 8`。 9. 设计一个一百亿的计算器要考虑数值溢出问题,可能需要使用大数处理类如`BigInteger`。 10. 使用`final`修饰变量时,意味着引用不可变,即不能指向其他对象,但如果引用的是一个对象,该对象的内容可以改变。 11. `"=="`比较的是对象的引用,而`equals()`方法通常比较的是对象的内容。 12. 静态变量属于类,实例变量属于对象。静态变量在所有类实例之间共享,而实例变量是每个实例独有的。 13. 不可以从`static`方法内部直接调用非`static`方法,因为非`static`方法依赖于对象实例。 14. `Integer`是`int`的包装类,它们之间存在自动装箱和拆箱。`Integer`提供了额外的方法和功能,而`int`是基本数据类型。 15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 16. 代码不妥之处可能涉及变量声明、类型转换、异常处理等问题,需要具体代码分析。 17. `public`、`private`、`protected`和默认访问修饰符分别代表了不同的访问权限:`public`可从任何地方访问,`private`仅在类内部访问,`protected`在包内和子类中访问,不写则默认为包内访问。 18. `Overload`是重载,表示多个同名方法,参数列表不同;`Override`是重写,子类方法覆盖父类方法,保持方法签名一致。重载不改变返回值类型。 19. 构造器不能被`override`,但可以被`overload`。 20. 接口可以继承接口,抽象类可以实现接口,但不能继承具体类。抽象类中可以有静态的`main`方法,但无法作为程序入口。 21. 写`clone()`方法时,通常会调用`super.clone()`来创建一个新的对象。 22. 面向对象的特征包括封装、继承、多态。 23. Java通过方法重写和父类引用子类对象实现多态。 24. `abstract class`可以包含方法实现,而`interface`只能声明方法,不能实现。抽象类可以有构造器,而接口没有。 25. 抽象方法不能同时是`static`、`native`或`synchronized`,因为这些修饰符与抽象方法的定义相冲突。 26. 内部类是定义在一个类内部的类,StaticNestedClass是静态内部类,不依赖于外部类的实例,而InnerClass是非静态内部类,需要外部类实例才能创建。 27. 内部类可以引用包含类的成员,包括私有成员,但不能访问静态成员,除非通过包含类的实例引用。 28. 匿名内部类不能直接扩展其他类,但可以实现接口。它可以隐式实现一个接口,而无需给出接口名称。 这份复习资料旨在帮助学习者巩固Java编程的基础知识,包括语言特性和面向对象的设计原则,为面试和实际开发做好准备。