Java包装类,基本的装箱与拆箱
我的博客
何为包装类
将原始类型和包装类分开以保持简单。当需要一个适合像面向对象编程的类型时就需要包装类。当希望数据类型变得简单时就使用原始类型。
原始类型不能为null
,但包装类可以为null
。包装类可用于实现多态性。
通俗的说,为啥要这个东西的存在呢?
首先,我们要知道,Java语言优势就是在于JVM的跨平台机制与面向对象语言的这两大优势。
Java是一个面向对象的编程语言,但是却有一个小小的不足,Java中的八种基本数据类型却是不面向对象的。
那既然不面向对象,就写一个类让这些类型面向对象,于是包装类诞生了。
在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类(Wrapper Class),包装类均位于java.lang包。
包装类
为了方便记忆,除了Integer
和Character
类以后,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写即可。
对应如下
boolean —> Boolean
char —> Character
byte —> Byte
short —> Short
long —> Long
int —> Integer
float —> Float
double —> Double
如何装箱
public class Demo1 {
public static void main(String[] args) {
int a = 20;
Integer i = Integer.valueOf(a);
Integer j = a;
System.out.println(a + " " + i + " " + j);
}
}
首先,我们先定义一个对象,我们这里是int
类型,那我们就直接使用了Integer i
,定义了一个对象i
,然后我们使用Integer
类中的valueOf()
方法将基本的int
类型a
转换成了对象i
。
此时,这个i
是一个对象,携带的int
值为20
。
但是,我们看看,给出的代码中还有一段,Integer j = a
,是不是疑惑为什么他没有用valueOf()
方法?
这是因为JDK自从1.5版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。
所以,他其实用了这个方法,只是你看不见罢了,我们称之为自动装箱。
输出的值也都一样。这里为了显示自动装箱,所以才去定义了valueOf()
。
如何拆箱
public class WrapperExample2 {
public static void main(String args[]) {
Integer a = new Integer(3);
int i = a.intValue();
int j = a;
System.out.println(a + " " + i + " " + j);
}
}
拆箱就不多说,使用对象调用intValue()
方法即可。
同时他也支持自动拆箱。
演示
public class Demo1 {
public static void main(String[] args) {
int a = 20;
Integer i = Integer.valueOf(a);
Integer j = a;
System.out.println("装箱"+i);
System.out.println("自动装箱"+j);
//对上面的j进行拆箱
int x = j.intValue();
int y = j;
System.out.println("拆箱"+i);
System.out.println("自动拆箱"+j);
}
}
运行结果如下:
自动装箱和拆箱与手动没有区别,我们自然平常选择自动啦!
Java包装类,基本的装箱与拆箱的更多相关文章
- java包装类,自动装箱,拆箱,以及基本数据类型与字符串的转换
package cn.learn; import java.util.ArrayList; /* 包装类 java.lang中,基本运算类型效率高 装箱:把基本类型数据包装为包装类 1.构造方法 In ...
- 《Java中的自动装箱和拆箱功能.》
//Java中的自动装箱和拆箱功能. class AutoboxingUnboxing { public static void main(String[] args) { //直接把一个基本类型变量 ...
- Java暗箱操作之自动装箱与拆箱
我以前在写Android项目的时候,估计写得最多最熟练的几句话就是: List<Integer> list = new ArrayList<Integer>(); list.a ...
- Java基础(十四)--装箱、拆箱详解
Java中基本数据类型都有相对应的包装类 什么是装箱?什么是拆箱? 在Java SE5之前,Integer是这样初始化的 Integer i = new Integer(10); 而在从Java SE ...
- java中的自动装箱和拆箱
一.什么是自动装箱和拆箱: 我们知道java为8种基本类型分别提供了对应的包装类型,在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integer i=new I ...
- 深入剖析Java中的自动装箱和拆箱过程
深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱 ...
- Java中的自动装箱与拆箱
自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象.自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接. 如 ...
- Java基础 【自动装箱和拆箱、面试题】
JDK 1.5 (以后的版本)的新特性自动装箱和拆箱 1. 自动装箱:把基本类型转换为包装类类型 int a =10; Integer i = new Integer(a); Integer valu ...
- java 基础知识七 装箱和拆箱
java 基础知识七 装箱和拆箱 数据类型可分为两大种,基本数据类型(值类型)和类类型(引用数据类型) 装箱:把基本类型用他们相对应的引用类型包装起来,使他们可以具有对象的特质 基本数据类型 ...
- java 中的自动装箱和拆箱操作
在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Java SE5之前,如果要生成一个 ...
随机推荐
- Python 的排序方法 sort 和 sorted 的区别
使用 sort() 或内建函数 sorted() 对列表进行排序.它们之间的区别有两点: sort() 方法是对原列表进行操作,而 sorted() 方法会返回一个新列表,不是在原来的基础上进行操作. ...
- bzoj4596/luoguP4336 [SHOI2016]黑暗前的幻想乡(矩阵树定理,容斥)
bzoj4596/luoguP4336 [SHOI2016]黑暗前的幻想乡(矩阵树定理,容斥) bzoj Luogu 题解时间 看一看数据范围,求生成树个数毫无疑问直接上矩阵树定理. 但是要求每条边都 ...
- CSC3100
其实是存一下代码 1. AVL的java实现 维护一下每个点左右子树深度差,差绝对值大于2就转,转的方式和treap, splay转的方式差不多.旋转操作可以使两端差归零变得更平衡. 虽然平衡但转的次 ...
- mysql innodb事务的ACID及其实现的保证机制
MySQL事务的ACID,一致性是最终目的.保证一致性的措施有:A原子性:靠undo log来保证(异常或执行失败后进行回滚).D持久性:靠redo log来保证(保证当MySQL宕机或停电后,可以通 ...
- 说说对 SQL 语句优化有哪些方法?(选择几条)
1.Where 子句中:where 表之间的连接必须写在其他 Where 条件之前,那些可 以过滤掉最大数量记录的条件必须写在 Where 子句的末尾.HAVING 最后. 2.用 EXISTS 替代 ...
- jvm-learning-双亲委派机制
是什么 工作原理 例子 优势 什么是沙箱安全机制 其他知识 对类加载器的引用 类的主动使用和被动使用
- dos 循环读取当前文件夹下的视频名字
@echo off for /R %%i in (*.mp4) do ( echo -isma %%~nxi ) pause
- 并发包中automic类的原理
提到同步,我们一般首先想到的是lock,synchronized,但java中有一套更加轻量级的同步方式即atomic类.java的并发原子包里面提供了很多可以进行原子操作的类,比如: AtomicI ...
- 学习DNS(一)
DNS(Domain Name System,域名系统)因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户方便的访问互联网,而不用去记住能够被机器读取的IP数串.通过主机名,最终得到该主 ...
- C++ | 虚函数产生条件
虚函数产生的条件 能否成为虚函数主要有以下两种判断依据,如果以下两种条件均满足,则具有成为虚函数的条件. 1.虚函数机制为动多态提供支持,而虚函数表中存放着虚函数的地址.因此虚函数必须是可以取地址的函 ...