没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
12页
谈一谈”=“与”equals0"的区别。 《Think in Java》中说:“关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系”。 "=="判断的是两个对象的内存地址是否一样,适用于原始数据类型和枚举类型(它们的变量存储的是值本身,而引用类型变量存储的是引用);equals是Object类的方法,Object对它的实现是比较内存地址,我们可以重写这个方法来自定义“相等”这个概念。比如类库中的String、Date等类就对这个方法进行了重写。综上,对于枚举类型和原始数据类型的相等性比较,应该使用"一";对于引用类型的相等性比较,应该使用equals方法。
资源推荐
资源详情
资源评论
1. Map, Set, List, Queue、Stack 的特点及用法。
Map: Java 中存储键值对的数据类型都实现了这个接口,表示“映射表”。
支持的两个核心操作是
get(Object key)
以及
put(K key, V value)
,分别用
来获取键对应的值以及向映射表中插入键值对。
Set: 实现了这个接口的集合类型中不允许存在重复的元素,代表数学意
义上的“集合”。它所支持的核心操作有
add(E e)
,
remove(Object o)
,
contains(Object o)
,分别用于添加元素,删除元素以及判断给定元素是
否存在于集中。
List: Java 中集合框架中的列表类型都实现了这个接口,表示一种有序序列。
支持
get(int index)
,
add(E e)
等操作。
Queue: Java 集合框架中的队列接口,代表了“先进先出”队列。支持
add(E element)
,
remove()
等操作。
Stack: Java 集合框架中表示堆栈的数据类型,堆栈是一种“后进先出”的
数据结构。支持
push(E item)
,
pop()
等操作。
2. Java 中的原始数据类型都有哪些,它们的大小及对应的封装类是什么?
•
boolean
boolean 数据类型非 true 即 false。这个数据类型表示 1 bit,但是它的大小并没有精
确定义。
《Java 虚拟机规范》中如是说:“虽然定义了 boolean 这种数据类型,但是只对它
提供了非常有限的支持。在 Java 虚拟机中没有任何供 boolean 值专用的字节码指令,
Java 语言表达式所操作的 boolean 值,在编译之后都使用 Java 虚拟机中的 int 数据类
型来代替,而 boolean 数组将会被编码成 Java 虚拟机的 byte 数组,每个元素 boolean
元素占 8 位”。这样我们可以得出 boolean 类型单独使用是 4 个字节,在数组中又是1
个字节。那虚拟机为什么要用 int 来代替 boolean 呢?为什么不用 byte 或 short, 这
样不是更节省内存空间吗?实际上,使用int 的原因是,对于当下 32 位的 CPU 来说,
一次进行 32 位的数据交换更加高效。
综上,我们可以知道:官方文档对 boolean 类型没有给出精确的定义,《Java 虚拟
机规范》给出了“单独时使用 4 个字节,boolean 数组时 1 个字节”的定义,具体还要
看虚拟机实现是否按照规范来,所以 1 个字节、4 个字节都是有可能的。这其实是
一种时空权衡。
boolean 类型的封装类是 Boolean。
•
byte——1 byte——Byte
•
short——2 bytes——Short
•
int——4 bytes——Integer
•
long——8 bytes——Long
•
float——4 bytes——Float
•
double——8 bytes——Double
•
char——2 bytes——Character
3.
谈一谈”==“与”equals()"的区别。
《Think in Java》中说:“关系操作符生成的是一个 boolean 结果,它们计算的
是操作数的值之间的关系”。
"=="判断的是两个对象的内存地址是否一样,适用于原始数据类型和枚举类型
(它们的变量存储的是值本身,而引用类型变量存储的是引用);equals 是 Object
类的方法,Object 对它的实现是比较内存地址,我们可以重写这个方法来自定义
“相等”这个概念。比如类库中的 String、Date 等类就对这个方法进行了重写。
综上,对于枚举类型和原始数据类型的相等性比较,应该使用"==";对于引用类
型的相等性比较,应该使用 equals 方法。
4. Java 中的四种引用及其应用场景是什么?
强引用: 通常我们使用 new 操作符创建一个对象时所返回的引用即为强
引用
软引用: 若一个对象只能通过软引用到达,那么这个对象在内存不足时会
被回收,可用于图片缓存中,内存不足时系统会自动回收不再使用的
Bitmap
弱引用: 若一个对象只能通过弱引用到达,那么它就会被回收(即使内存
充足),同样可用于图片缓存中,这时候只要 Bitmap 不再使用就会被回
收
虚引用: 虚引用是 Java 中最“弱”的引用,通过它甚至无法获取被引用的对
象,它存在的唯一作用就是当它指向的对象回收时,它本身会被加入到引
用队列中,这样我们可以知道它指向的对象何时被销毁。
5. object 中定义了哪些方法?
clone(), equals(), hashCode(), toString(), notify(), notifyAll(), wait(),
finalize(), getClass()
6. hashCode 的作用是什么?
请参见散列表的基本原理与实现
7. ArrayList, LinkedList, Vector 的区别是什么?
ArrayList: 内部采用数组存储元素,支持高效随机访问,支持动态调整
大小
LinkedList: 内部采用链表来存储元素,支持快速插入/删除元素,但不
支持高效地随机访问
Vector: 可以看作线程安全版的 ArrayList
8. String, StringBuilder, StringBuffer 的区别是什么?
String: 不可变的字符序列,若要向其中添加新字符需要创建一个新的
String 对象
StringBuilder: 可变字符序列,支持向其中添加新字符(无需创建新对象)
StringBuffer: 可以看作线程安全版的 StringBuilder
9. HashMap 和 HashTable 的区别
HashTable 是线程安全的,而 HashMap 不是
剩余11页未读,继续阅读
资源评论
流水不腐程序
- 粉丝: 643
- 资源: 1024
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- IMG_5905.PNG
- Cyclone Version 9.51
- 高性能量化回测工具 hikyuu 2.0.3 python 3.12 windows 安装包
- 省级城乡居民基本养老保险情况数据集(2010-2022年).xlsx
- 舞队填写版.cpp
- 基于BP神经网络的多输入单输出回归预测.zip
- 高性能量化回测工具 hikyuu 2.0.3 python 3.9 windows 安装包
- 省级城镇职工基本养老保险情况2000-2022年.xlsx
- 高性能量化回测工具 hikyuu 2.0.3 python 3.10 windows 安装包
- 算法部署-使用OpenVINO+C#部署PaddleOCR字符识别算法-项目源码-优质项目实战.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功