Java 包装类:原始数据类型与迭代器
Java Iterator
Iterator 接口提供了一种迭代集合的方法,即顺序访问集合中的每个元素。它支持 hasNext() 和 next() 方法,用于检查是否存在下一个元素以及获取下一个元素。
获取 Iterator
可以使用集合的 iterator() 方法获取 Iterator 实例:
// 导入 ArrayList 类和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
// 创建一个 ArrayList
ArrayList<String> cars = new ArrayList<>();
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("Mazda");
// 获取 Iterator
Iterator<String> it = cars.iterator();
}
}
遍历集合
可以使用 hasNext() 和 next() 方法遍历集合:
while (it.hasNext()) {
String car = it.next();
System.out.println(car);
}
删除元素
可以使用 Iterator 的 remove() 方法从集合中删除元素:
while (it.hasNext()) {
String car = it.next();
if (car.equals("Volvo")) {
it.remove();
}
}
注意: 在使用 Iterator 删除元素时,不要使用集合的 for 循环或 for-each 循环,因为这会导致集合大小发生变化,并可能导致 Iterator 出现异常。
Iterator 是 Java 中用于遍历集合的强大工具。它提供了灵活的迭代方式,并支持元素的删除。
Iterator 的优势:
- 灵活的迭代方式
- 支持元素的删除
- 可用于各种集合
Iterator 的劣势:
- 使用时需要注意集合大小变化
- 可能比
for循环或for-each循环效率低
建议:
- 当需要灵活的迭代方式或需要删除元素时,使用
Iterator。 - 当只需要遍历集合并读取元素时,可以使用
for循环或for-each循环。
Java 包装类
Java 包装类为原始数据类型(如 int、boolean 等)提供了对象表示形式。这使得将原始数据类型与需要对象的 API 一起使用成为可能。
原始类型与包装类
下表列出了 Java 中的原始类型及其对应的包装类:
| 原始类型 | 包装类 |
|---|---|
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
boolean |
Boolean |
char |
Character |
使用包装类
创建包装对象
可以使用包装类的构造函数创建包装对象,并将原始值作为参数传递:
Integer myInt = new Integer(5);
Double myDouble = new Double(5.99);
Character myChar = new Character('A');
获取值
可以使用包装类的 xxxValue() 方法获取其对应的原始值:
int intValue = myInt.intValue();
double doubleValue = myDouble.doubleValue();
char charValue = myChar.charValue();
其他方法
包装类还提供了其他一些方法,例如:
toString(): 将包装对象转换为字符串equals(): 比较两个包装对象是否相等hashCode(): 返回包装对象的哈希码
自动装箱和拆箱
从 Java 5 开始,自动装箱和拆箱允许将原始类型隐式转换为包装类,反之亦然。
例如:
// 自动装箱
int x = 10;
Integer y = x; // 隐式将 int 转换为 Integer
// 拆箱
Integer z = 20;
int w = z; // 隐式将 Integer 转换为 int
Java 包装类提供了将原始数据类型用作对象的方法。它们在许多场景下都很有用,例如:
- 将原始数据类型与需要对象的 API 一起使用
- 将原始数据类型存储在集合中
- 使用包装类提供的额外方法
建议:
- 在需要将原始数据类型用作对象时使用包装类。
- 了解自动装箱和拆箱机制,以便更好地使用包装类。
注意:
- 虽然自动装箱和拆箱很方便,但它们可能会导致一些性能问题。
- 在某些情况下,例如需要精确控制内存使用时,最好避免使用自动装箱和拆箱。
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
Java 包装类:原始数据类型与迭代器的更多相关文章
- Java中原始数据类型存放位置理解
原始数据类型的变量存放在栈还是堆,应该由上下文去决定. 如下所示的局部方法中,定义了本地变量a,且为原始数据类型,所以存放在栈中. public void func(){ int a = 3; } 再 ...
- java 原始类与封装类 的区别
int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.int的默认值为0,而Integer的默认值为null,即Integer可 ...
- Java中基本数据类型和包装类
参考:深入剖析Java中的装箱和拆箱; Java中基本数据类型和包装类互转中 缓冲机制的使用; java学习笔记:装箱和拆箱,包装器和缓冲池 Java 各 类型数据在内存中分配情况详解 一 java内 ...
- Java parseInt_使用此方法得到的原始数据类型的一个特定的字符串
Java parseInt解释加方法示例 使用此方法得到的原始数据类型的一个特定的字符串. parseXxx()是一个静态方法,可以有一个参数或两个 java parseInt ...
- Java语言基础(五) Java原始数据类型的分类以及数据范围
Java原始数据类型的分类以及数据范围 1.基本数据类型分为:整型(byte, short, int, long),浮点型(float, double),字符型(char),布尔型(boolean) ...
- Java 原始数据类型
如何记住 Java 中的原始数据类型? 画了一个图方便记忆:
- Java 原始数据类型的计算:运算符重载(Operator Overload)和类型转换(Type Conversion)
原文阅读:<算法(第四版)>第一章 第一节:基础编程模型 有没有在面试的时候被问到:下面这几行代码的执行结果是什么?依据是什么? System.out.println (5/3); Sys ...
- Java的基本数据类型大小及其包装类
Java的基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义 ...
- Java:基本数据类型包装类
基本数据类型对象包装类 基本数据类型(关键字) 引用数据类型(类) byte Byte short ...
- Java中基本数据类型的存储方式和相关内存的处理方式(java程序员必读经典)
1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...
随机推荐
- VIM初使化
vim ~/.vimrc #设置编码 set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936 #显示行号 set number #一个tab为4个空格 ...
- 【Azure 存储服务】多设备并发往 Azure Storage Blob 的 Container 存数据是否可以
问题描述 多设备并发往 Azure Storage Blob 的 Container 存数据是否可以? 问题解答 可以! Azure Storage 是支持的并发存储数据的,Blob 可以使用乐观并发 ...
- 003-Java程序流程控制
3. Java程序流程控制(重点) 程序的三种控制结构 3.1 分支结构 if, switch 3.1.1 if if 分支 根据条件(真或假)来决定执行某段代码. if分支应用场景 if 第一种形式 ...
- C++ //set/multiset 容器 //set不可以插入重复的数字 multiset可以插入重复的数字 //ste容器构造和赋值 //set大小和交换 //set 插入和删除 //set查找和统计 //set 和 multiset 区别 //pair 对组创建 //set存放自定义数据类型 //set内置数据 进行排序
1 //set/multiset 容器 //set不可以插入重复的数字 multiset可以插入重复的数字 2 //ste容器构造和赋值 //set大小和交换 //set 插入和删除 3 //set查 ...
- Java 辨析之实例化和初始化
在面向对象编程中,实例化和初始化是两个相关但不同的概念: 实例化(Instantiation): 实例化是指创建一个类的新的具体对象的过程.当程序运行时,通过 new 关键字调用类的构造函数来创建该类 ...
- translate speaker 翻译朗读者API - vscode 插件推荐 单词发音
translate speaker 翻译朗读者API - vscode 插件推荐 单词发音 有个小bug,就是发音发两次,改个配置就好了. "translateSpeaker.mode&qu ...
- 安装VMware——Unable to install all modules.See log /tmp/vmware-han/vmware-6098.log for detalls.(Exit code 1)的解决方法(模块加载失败)
这是编译失败的原因在VM社区有这样一种解决方案,亲测有效,帮助我自己解决的麻烦,所有在这分享,希望能够帮助到小伙伴:不要被接下来的代码吓倒因为这是github上项目,所以要先在ubuntu上安装git ...
- 面试官:volatile如何保证可见性的,具体如何实现?
写在开头 在之前的几篇博文中,我们都提到了 volatile 关键字,这个单词中文释义为:不稳定的,易挥发的,在Java中代表变量修饰符,用来修饰会被不同线程访问和修改的变量,对于方法,代码块,方法参 ...
- WPF多数类概念性注册加自动扫描
在java中springboot的配置应用了自动扫描 @ComponentScan(value = {"com.example", "com.fox"}) 而对 ...
- 记录--前端实现电子签名(web、移动端)通用
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 在现在的时代发展中,从以前的手写签名,逐渐衍生出了电子签名.电子签名和纸质手写签名一样具有法律效应.电子签名目前主要还是在需要个人确 ...