Java 为什么集合不能直接存储基元类型 原始类型是Java语言中最基本的数据类型。这种类型只有一个目的–包含纯粹的、简单的一类值。由于java是一种静态类型的语言,每个变量和表达式的类型在编译时就已经知道了,因此你不能为这种原始类型定义新的操作。 说明: Invalid : vector.addElement(3) ; Valid : vector.addElelment("3") ;JavaCopy 结论: Java的原始类型不是被引用的类型。例如,int不是一个Object。 Java使用引用类型的类型擦除来做泛型。例如,A List<?> 在运行时实际上是一个List 。 集合是用于存储和操作一组对象的框架。Java集合意味着一个单一的对象单元。由于上述两个声明是真的,通用的Java集合不能直接存储原始类型。 封装类提供了一种将原始数据类型(int, boolean, etc.)作为对象使用的方法,或者说封装类是一个其对象封装或包含原始数据类型的类。它催生了以下两个概念。 Autoboxing Unboxing 原始数据类型 Wrapper Class byte Byte short Short int Integer long Long float Float double Double boolean Boolean char Character 自动排版是指将原始类型自动转换为其对应的封装类的对象,这被称为自动排版。例如。 将int转换为整数 长的转换为长 双倍数转换为双倍数,等等。 解箱只是自动装箱的反向过程。将一个封装类的对象自动转换为其相应的原始类型被称为拆箱。例如–将Integer转换为int,Long转换为long,Double转换为double,等等。 说明: Autoboxing // Importing input output classes import java.io.*; class GFG { // Main driver method public static void main(String args[]) { // Custom input Integer i = new Integer(21); // Boxing Integer j = 5; System.out.println("i=" + i + "\n j=" + j); } }JavaCopy 输出: i=21 j=5JavaCopy Illustration 2: Unboxing // Import input output classes import java.io.*; // Class public class GFG { // MAin driver method public static void main(String args[]) { // Custom input Integer i = new Integer(50); // Unboxing int a = i; // Unboxing int b = i.intValue(); // Print and display System.out.println("a=" + a + "\nb=" + b); } }JavaCopy 输出: a=50 b=50JavaCopy 实现: 当使用集合时,java编译器从原始类型创建一个封装对象,并使用泛型将其添加到集合中。 示例 1: // Java Program to illustrate Collections // are not directly storing primitives types // Importing input output classes import java.io.*; // Importing all classes from // java.util package import java.util.*; // Class class GFG { // Main driver method public static void main(String[] args) { // Creating a list of elements of Integer type. List<Integer> list = new ArrayList<Integer>(); // Iterating over elements of List object for (int i = 0; i < 10; i++) { // Adding the int primitives type values // If elements are added using add() method // then compiler automatically treats as // add(Integer.valueOf(i)) list.add(i); // This is what compiler does and // hence the goal achieved. // Print the primitive values System.out.println(i); } } }JavaCopy 输出 0 1 2 3 4 5 6 7 8 9JavaCopy 示例 2: 用于存储原始数据类型的集合 // Java Program to illustrate Collections // are not directly storing primitives types // Importing Map and HashMap classes // from java.util package import java.util.HashMap; import java.util.Map; // Class public class GFG { // Main driver method public static void main(String[] args) throws Exception { // Creating an object of Map type Map map = new HashMap(); // Creating int wrapper object // Custom input Integer var = new Integer(21); // Storing int to map map.put("key", var); // Getting int value from map Integer refVar = (Integer)map.get("key"); // Get the integer value from wrapper object int i = refVar.intValue(); // Display message for successful compilation System.out.print("Successfully compiled and executed"); } }JavaCopy 输出: Successfully compiled and executedJavaCopy 上一篇 Java 使用PriorityQueue来进行数据的分类收集 下一篇 为什么我们需要Java中的集合框架 Python教程 Python 教程 Tkinter 教程 Pandas 教程 NumPy 教程 Flask 教程 Django 教程 PySpark 教程 wxPython 教程 SymPy 教程 Seaborn 教程 SciPy 教程 RxPY 教程 Pycharm 教程 Pygame 教程 PyGTK 教程 PyQt 教程 PyQt5 教程 PyTorch 教程 Matplotlib 教程 Web2py 教程 BeautifulSoup 教程 Java教程 Java 教程 Web教程 HTML 教程 CSS 教程 CSS3 教程 jQuery 教程 Ajax 教程 AngularJS 教程 TypeScript 教程 WordPress 教程 Laravel 教程 Next.js 教程 PhantomJS 教程 Three.js 教程 Underscore.JS 教程 WebGL 教程 WebRTC 教程 VueJS 教程 数据库教程 SQL 教程 MySQL 教程 MongoDB 教程 PostgreSQL 教程 SQLite 教程 Redis 教程 MariaDB 教程 图形图像教程 Vulkan 教程 OpenCV 教程 大数据教程 R语言 教程 开发工具教程 Git 教程 VSCode 教程 Docker 教程 Gerrit 教程 Excel 教程 计算机教程 Go语言 教程 C++ 教程 Java 精品教程Java 教程Java 概述Java 环境搭建Java 基本语法Java 对象和类Java 如何使用单例类Java 构造方法Java 基本数据类型Java 变量类型Java 修饰符类型Java 访问修饰符Java 非访问修饰符Java 基本运算符Java 算术运算符示例Java 关系运算符示例Java 位运算符示例Java 逻辑运算符示例Java 赋值运算符示例Java 循环控制Java while循环Java for循环Java do while循环Java Break语句Java Continue语句Java 决策制定Java if语句Java if-else语句Java 嵌套if语句Java switch语句Java Numbers类Java Number xxxValue() 方法Java Number compareTo() 方法Java Number equals()方法Java Number valueOf()方法Java Number toString() 方法Java Number parseInt()方法Java Number abs() 方法Java Number ceil()方法Java Number floor() 方法Java Number rint()方法Java Number round()方法 回顶回顶部