Java编程基础复习要点与面试题解析
需积分: 7 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编程的基础知识,包括语言特性和面向对象的设计原则,为面试和实际开发做好准备。
2014-02-27 上传
2011-04-21 上传
2021-09-30 上传
2011-01-23 上传
2022-06-10 上传
2022-06-10 上传
2022-06-10 上传
xd811816
- 粉丝: 6
- 资源: 5
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍