16、java包装类
一、包装类的由来:
JAVA是面向对象的编程语言,但它也包含了8种基本数据类型,这8个基本数据类型不支持面向对象的编程机制,基本数据类型的数据也不具备“对象”的特性:没有属性,方法可以被调用。JAVA之所以提供这8种基本数据类型,主要是为了照顾程序员的传统的习惯。
如果没有包装了,那么使用基本的算术运算将非常麻烦,比如说计算一个1+2=3的运算
//第一种方式使用面向对象的方式
Integer a=new Integer(1);
Integer b=new Integer(2);
//当然如果不支持基本数据类型运算,可能会增加一个add方法如下
nteger c=Integer.add(a,b); //第二种方式使用基本数据类型方式
int c=1+2;
明显使用第二种方式简单方便的多。所以JAVA为了保留正在编程方式,就保留了这8中基本数据类型。但在某些时候,基本数据类型就有一些制约,例如所有引用类型的变量都继承了Object类,都可以当成Object类型变量使用。但基本数据类型的变量就不可以,如果有个方法需要Object类型的参数,但实际需要的值却是2,3等,这可能就比较难以处理。
为了解决8个基本数据类型的变量不能当成Object类型变量使用的问题,JAVA提供了包装类的概念,为了8个基本数据类型分别定义了相应的引用类型。
二、基本数据类型和包装类的对应关系
| 基本数量类型 | 包装类 | 继承父类 |
| byte | Byte | java.lang.Number |
| short | Short | java.lang.Number |
| int | Integer | java.lang.Number |
| long | Long | java.lang.Number |
| float | Float | java.lang.Number |
| double | Double | java.lang.Number |
| boolean | Boolean | java.lang.Object |
| char | Character | java.lang.Object |
8个包装类,除了Character外,其它都可以通过传递一个字符串来构建,例如:Integer a=new Integer("123")
【特别注意】:如果构建对象为Character时,当传入字符串为true时(不区分大小写),都会创建true对应关系的Character对象,否则将创建false对应关系的Character对象
如 :new Charater("trUE")——true new Character("a23")——flase
三、类型转换
1、包装类和基本数据类型转换

2、基本数据类型和String之间转换

四、基本类型和包装类占用空间对比
这里申明两个变量
int n1 = 100;
Integer n2 = new Integer(100);
下图展示n1和n2在内存中的结构

通过下面的方式计算后,在将Double类型改成double类型,对比后,可以发现,使用Double类型所暂用的空间多些
public static long getBytesUsingPrimitives(int n)
{
System.gc(); // force garbage collection
long memStart = Runtime.getRuntime().freeMemory();
Double[][] a = new Double[n][n]; // put some random values in the matrix
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
a[i][j] = Math.random();
} long memEnd = Runtime.getRuntime().freeMemory(); return memStart - memEnd;
}
16、java包装类的更多相关文章
- Java 包装类笔记
@(JDK)[包装类] Java 包装类笔记 当需要使用到集合的时候,如果是基础数据类型,需要转换为包装类,再使用,在JDK1.5之前,每次使用的时候,都需要手动转换为包装类(称为装箱),然后在使用的 ...
- Java包装类及其拆箱装箱
Java包装类,Wrapper~由于在java中,数据类型总共可分为两大种,基本数据类型(值类型)和类类型(引用数据类型).基本类型的数据不是对象,所以对于要将数据类型作为对象来使用的情况,java提 ...
- Java-Runoob-高级教程-实例-数组:16. Java 实例 - 数组并集
ylbtech-Java-Runoob-高级教程-实例-数组:16. Java 实例 - 数组并集 1.返回顶部 1. Java 实例 - 数组并集 Java 实例 以下实例演示了如何使用 unio ...
- Java包装类的常量池
Integer a=Integer.valueOf(100); Integer b=Integer.valueOf(100); System.out.println(a==b); Double d1 ...
- JAVA包装类的缓存范围
JAVA包装类的缓存范围 前两天面试遇到两个关于JAVA源码的问题,记录下来提醒自己. 1.写出下面的输出结果 System.out.println(Integer.valueOf("100 ...
- java包装类和值类型的关系
java包装类总是让人疑惑 它与值类型到底是怎么样一种关系? 本文将以int和Integer为例来探讨它们的关系 java值类型有int short char boolean byte long fl ...
- java包装类的缓存机制(转)
出处: java包装类的缓存机制 java 包装类的缓存机制,是在Java 5中引入的一个有助于节省内存.提高性能的功能,只有在自动装箱时有效 Integer包装类 举个栗子: Integer a = ...
- Java—包装类、Date和SimpleDateFormat、Calendar类
包装类 基本数据类型不能调用方法,功能简单,为了让基本数据类型也具备对象的特性,Java为每个基本数据类型提供了一个包装类,这样就可以像操作对象那样来操作基本数据类型. 基本类型和包装类之间的对应关系 ...
- Java 包装类及其与String转换、进制转换
一.包装类 1.基本类型和引用类型 Java中的基本类型我们都知道有8种,但是作为基本类型限制功能的发挥,例如整形转String类型等可能需要类方法实现会更加简便.那么八个基本类型对应八个包装类,即引 ...
随机推荐
- pytest文档26-运行上次失败用例(--lf 和 --ff)
前言 "80%的bug集中在20%的模块,越是容易出现bug的模块,bug是越改越多"平常我们做手工测试的时候,比如用100个用例需要执行,其中10个用例失败了, 当开发修复完bu ...
- spring Boot打可执行的jar包
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- Struts2 校验框架学习笔记
Struts2 校验框架 Struts2 和Struts1同样也提供了校验框架,但在Struts2 已经不再把校验框架做为一个插件,而是已经内置到了Struts2中,而且配置起来更为简单方便,功能也更 ...
- HBase性能调优(转)
原文链接:http://www.blogjava.net/ivanwan/archive/2011/06/15/352350.html 因官方Book Performance Tuning部分章节没有 ...
- @Java类加载的过程
前言 我们写的源程序.java文件经过编译后成为了.class字节码文件,.class文件中描述了类的各种信息,最终都需要加载到虚拟机(JVM)之后才能运行和使用.而虚拟机如何加载这些.class文件 ...
- Android ToggleButton Example--开关按钮
Android ToggleButton Example 在 Android 中, “android.widget.ToggleButton” 是个特殊的类,可以渲染出一个“开关按钮” ,顾名思义, ...
- 服务 Service 清单文件中可设置的属性
PS:对于一个Service,在没有在AndroidManifest.xml中声明的情况下使用时,不会像Activity那样直接崩溃并提示找不到Activity. 对于显式Intent启动的Servi ...
- android实现gif图与文字混排
我们在进行qq聊天的时候发送表情,但这些表情都是并不是静态的,更多的是动态图,gif图,那么如何在android客户端显示动态gif图呢. 在github上找到了这样一种方法,Github地址http ...
- DFA 算法实现关键词匹配
起因: 从网页中爬去的页面.须要推断是否跟预设的关键词匹配(是否包括预设的关键词),并返回全部匹配到的关键词 . 眼下pypi 上两个实现 ahocorasick https://pypi.pytho ...
- MySQL的IF函数
格式:IF(Condition,A,B) 意义:当Condition为TRUE时,返回A:当Condition为FALSE时,返回B. 作用:作为条件语句使用. 例子: SELECT fullN ...