java中8种基本类型变量对应的包装类:
byte -- Byte
short -- Short
int -- Integer
long -- Long
float -- Float
Double -- Double
boolean -- Boolean
char -- Character
-
包装类型的自动拆箱与自动装箱实现原理
从JDK1.5之后java引入了自动装箱与自动拆箱技术。
一般我们产生一个对象都是通过new的形式,而包装类型的自动装箱则是这样:
Long t1 = 1000L;
不必感到诧异,其实底层在编译阶段就把上述代码改成:
Long t1 = Long.valueOf(1000L);
---------------------------------------------------------------------------------------------------
拆箱机制:
long t2 = t1;
拆箱底层编译期实现:
long t2 = t1.longValue();
以上就是包装类型的拆箱以及装箱的原理。
-
包装类型缓存区的使用
对于Byte、Short、Integer、Long、Character这几种包装类型,当自动装箱的数值在[-128, 127]之间时,不会去创建对象而是从各自对应的缓存区中返回对象,例如:
- Long t1 = 128L;
- Long t2 = 128L;
- System.out.println(t1 == t2); //false,t1、t2均由new产生新的对象。
- Long t3 = 127L;
- Long t4 = 127L;
- System.out.println(t3 == t4); //true,从缓存区中取出返回的是同一个对象,==比较的是地址值,所以这里当然返回true了。
实现原理:因为自动装箱会使用各自包装类的valueOf(),这里只给出Long包装类型底层实现。
- public static Long valueOf(long l) {
- final int offset = 128;
- if (l >= -128 && l <= 127) { // will cache
- return LongCache.cache[(int)l + offset];
- }
- return new Long(l);
- }
- private static class LongCache {
- private LongCache(){}
- static final Long cache[] = new Long[-(-128) + 127 + 1];
- static {
- for(int i = 0; i < cache.length; i++)
- cache[i] = new Long(i - 128);
- }
- }
相关推荐
在“四川大学 Java系统类PPT”中,涵盖了几个关键的知识点,包括输入输出、包装类、字符串处理、Main方法参数以及集合类的使用。以下是这些主题的详细说明: 1. 输入输出初步: Java的输入/输出(I/O)系统是通过流...
JAVA中的包装类是对应于基本数据类型的一类特殊的类。它们使得基本数据类型能够享受面向对象编程带来的便利。例如,包装类提供了一系列方法,能够方便地进行数值运算、比较等操作。包装类包括了:Byte、Short、...
学习Java常用类时,我们需要关注以下几点: 1. 类:理解类的基本概念,知道如何定义一个类,以及如何理解他人编写的类。类是面向对象编程的核心,它描述了一类事物的属性和行为。 2. 类的成员:包括字段(变量)、...
这样做有以下几点好处: - **便于存储**:可以在集合或数组中存储这些包装类的对象。 - **提供方法**:每个包装类都提供了一些与基本数据类型相关的有用方法,例如转换、比较等。 - **支持null值**:包装类可以表示...
包装类是Java提供的对应原始数据类型的类,如Integer、Double等,它们提供了将原始类型转换为对象的便利。例如,可以通过`valueOf()`方法将字符串转换为对应的数值类型。 在实际编程中,包装类的用法可以帮助我们更...
"EigenC++快速矩阵库的Java包装器"的实现通常涉及以下几个关键知识点: 1. **JNI(Java Native Interface)**:JNI是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。在这个案例中,JNI被用来在...
从C++过渡到Java,开发者需要注意以下几个关键点,以便更好地适应纯面向对象的Java编程。 1. **内存管理与垃圾回收** 在C++中,程序员需要手动进行内存分配和释放,而Java则采用了自动垃圾回收机制。Java的垃圾...
- **自动装箱/拆箱**:允许自动在基本类型和对应的包装类之间进行转换。 - **静态导入**:可以静态导入类中的静态成员,简化代码。 - **可变参数**:方法可以接受任意数量的同类型参数。 以上是Java的基础知识和...
### 2024年内部类与泛型枚举包装类详解 #### 一、内部类概述 **内部类**是Java中一种特殊类的定义方式,它允许在一个类的内部定义另一个类。这种特性增加了类的设计灵活性,使得类与类之间能够更好地封装和组织。 ...
- 为方便操作,Java为每种基本类型提供了包装类,例如int对应Integer。 - 自动装箱/拆箱机制:基本类型与包装类型之间可以自动转换。 5. **构造器** - 构造器不可被重写,但可以被重载,即在同一个类中创建多个...
在这段时间里,他们通常会掌握以下几个关键的知识点: 1. **基础语法与核心概念**:掌握Java的基础语法,包括数据类型、运算符、流程控制语句等。理解面向对象编程(OOP)的概念,如封装、继承、多态,并能够设计和...
Java API中的类主要分为以下几个部分:String类、StringBuffer类、对象包装类、集合类、Hashtable类、日期时间类等。 二、String类 String类是Java中最基本的类之一。它提供了两个赋值方式:String str = new ...
2. **包装类**: Java提供了8种基本数据类型的包装类,如`Integer`、`Double`等,它们将原始数据类型(如int、double)转换为对象形式,便于在面向对象的编程中使用。包装类还提供了许多额外的实用方法,例如`...
4. **自动装箱与拆箱**:Java 5.0引入了自动装箱和拆箱机制,使得基本类型与对应的包装类之间可以无缝转换,简化了代码编写。例如,Integer i = 5; 这样的语句在Java 5.0及以后版本中是合法的。 5. **增强的for循环...
在实现这些功能时,还需要注意以下几点: - **同步问题**:音频处理通常涉及到大量的I/O操作,需要处理好线程同步,避免数据竞争和资源冲突。 - **错误处理**:音频文件可能因各种原因损坏,确保代码能优雅地处理...
自动装箱和拆箱简化了基本类型和它们的包装类之间的操作,使得Java在处理这些类型转换时更为方便。 以上内容为Java面试汇总.pdf文档中的关键知识点,对于准备Java面试的应聘者来说,这些知识点是必须掌握的基础内容...
1. **基础类库**:如`java.lang`包,这是每个Java程序的基础,包括基本数据类型包装类、`Object`类(所有类的父类)、异常处理、线程管理等。例如,`String`类用于字符串操作,`System`类提供了系统相关的全局变量和...
Java程序的执行过程大致分为以下几个步骤: 1. 编写源代码并保存为`.java`文件。 2. 使用Java编译器(javac)将源代码编译成字节码(`.class`文件)。 3. 字节码由Java虚拟机(JVM)解释执行或通过JIT编译器转换为...
虽然Java反射提供了一种非常灵活的方式来操作类和对象,但在实际应用中也需要注意几个关键点: ##### 1. **安全性** - 使用反射可能会导致安全漏洞,因为可以访问到私有成员。 - 在设计应用程序时应限制反射的...
综上所述,本文介绍了 Java 编程语言中一些常用的类,包括 `String`、`StringBuffer`、`StringBuilder`、基本类型的包装类、日期类、数字类、`Random` 类以及枚举类型。这些类和接口是 Java 程序员经常使用的工具,...