目录

  • 1 为什么提供包装类?
  • 2 装箱和拆箱
  • 3 包装类的4个特点
  • 4 包装类类型

正文

1 为什么提供包装类?
  1) 由于Java的基本数据类型功能简单,不具备面向对象的特性,实际使用时存在很多的不便,所以为所有的基本类型都提供了对应的包装类。
  2) 包装类为基本数据类型提供一些操作方法和属性(最大值、最小值等),比如包装类提供了将字符串转为基本类型的静态方法以及最小值属性。 

Float f1 = Float.valueOf("1.01");
Float f2 = Float.MIN_VALUE;

  3) 在涉及对象的操作时,可以使用包装类对象替换基本数据类型,比如HashMap只能储存Object对象的引用,不能存储基本类型。

Map map = new HashMap();
map.put("key1",new Integer(100));
map.put("key2",100);//由于Java5.0以上支持自动装箱拆箱,所以此行代码编译也能通过,编译器默认将100转为了它的包装类。

  

2 装箱和拆箱:

  1) 装箱:把基本数据类型转为包装类。
  2) 拆箱:把包装类转为基本数据类型。
  3) Java5.0以上支持自动装箱拆箱。

Integer i1= 100;// 自动装箱,编译器自动调用Integer.valueOf(100);
int i2 = i1;// 自动拆箱,编译器自动调用i1.intValue(100);
int i3 = new Integer(100);// 自动拆箱

  

3 包装类的4个特点:
  1) 包装类都是final类,不能被继承。
  2) 值不变:包装类第一次创建后,它表示的值就不会再改变,也没有提供任何方法改变它。
  3) 提供两种构造函数:
    ① 第一种构造函数:以基本类型值作为参数。       
    ② 第二种构造函数:以String作为参数,且String表示的值是十进制的。   

//第一种构造函数
Integer i1 = new Integer(010); //表示八进制,值为8
//第二种构造函数
Integer i2 = new Integer("010"); // 表示十进制的10

  4) 都有静态域TYPE,表示Class对象。Integer.TYPE和int.class等价。

4 包装类类型:


  1) Void(比较特殊,和一般包装类不一样,可忽略):
    ① 没有要包装的值,不提供方法,不能被实例化。
    ② Void只有一个静态TYPE域,等价于void.class。
  2) Boolean
  3) Character
  4) Number:Number是一个抽象类,所有基本数值类型的包装类都继承该类,且都要覆盖Number的以下方法,以便数值之间进行转换。基本数字类型包装类(Byte、Short、Integer、Long、Float、Double)

byteValue(); shortValue();  intValue();    longValue();    floatValue(); doubleValue(); 

  5) 整数包装类:Byte、Short、Integer、Long,针对-128到127之间的数据,做了一个数据 缓冲池,所以在进行==比较时,要特别注意。如果直接用基本类型和包装类型比较,则包装类型会退化为基本类型。

Integer i1 = 127; // 自动装箱,使用Integer.valueOf(127),取的缓冲区中的对象。
Integer i2 = 127;
System.out.println(i1 == i2);// true
Integer i3 = new Integer(127); // 不去取缓冲区的对象,所以不相等
Integer i4 = new Integer(127);
System.out.println(i3 == i4);// false Integer i5 = 128;// 自动装箱,使用Integer.valueOf(128),但超过了127,所以也不会取缓冲区中的对象。
Integer i6 = 128;
System.out.println(i5 == i6);// false int i7 = 128;
System.out.println(i6 == i7);// true 和基本类型比较时,包装类型会自动转为基础类型,所以相等

  6) 浮点数包装类:Float、Double    

J2SE-包装类的更多相关文章

  1. J2SE核心开发实战(二)——字符串与包装类

    字符串与包装类 一.实验简单介绍 在本章.我们将学习一些用于处理字符串的API以及包装类的相关知识. 本章知识点 字符串API 包装类及其应用 二.认识字符串类 1. 什么是字符串类 Java字符串类 ...

  2. Integer与int的区别(包装类和基本数据类型的区别)

    1. 默认值 int默认值为0,Integer的默认值为null.推论:Integer既可以表示null又可以表示0 2. 包装类中提供了该类型相关的很多算法操作方法 如把十进制装换为2进制(toBi ...

  3. final和包装类

    ==================================================================================================== ...

  4. java之数据结构之链表及包装类、包

    链表是java中的一种常见的基础数据结构,是一种线性表,但是不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针.与线性对应的一种算法是递归算法:递归算法是一种直接或间接的调用自身算法的过 ...

  5. 0024 Java学习笔记-面向对象-包装类、对象的比较、String常量池问题

    包装类 基本类型-->包装类 byte-->Byte short-->Short int-->Integer long-->Long char-->Characte ...

  6. J2EE,J2SE,J2ME,JDK,SDK,JRE,JVM区别

    转自:http://www.metsky.com/archives/547.html 一.J2EE.J2SE.J2ME区别 J2EE——全称Java 2 Enterprise Edition,是Jav ...

  7. Java基础知识点1:基本类型包装类

    基本类型的包装类 简介 通常来说我们在程序中经常会使用元类型,比如 int data = 1; float data = 2.1F; 但是在有些场景中不能直接使用元类型,比如如果我们想要建立一个int ...

  8. Java学习_int和Integer的区别+包装类

    1.Java 中的数据类型分为基本数据类型和引用数据类型 int是基本数据类型,Integer是引用数据类型: Ingeter是int的包装类,int的初值为0,Ingeter的初值为null. 2. ...

  9. Java基础——基本类型和包装类、基本类型和字符串之间的转换

    基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更 ...

  10. J2EE、J2SE、J2ME是什么意思?

    本文介绍Java的三大块:J2EE.J2SE和J2ME.J2SE就是Java2的标准版,主要用于桌面应用软件的编程:J2ME主要应用于嵌入是系统开发,如手机和PDA的编程:J2EE是Java2的企业版 ...

随机推荐

  1. SPARK 学习笔记一

    1.Spark基于内存进行运算 2.Spark核心是SprintContext,是程序的入口 3.RDDs是提供抽象的数据集,通过RDDS可以方便对分布在各个节点的数据进行计算,而且忽略细节 4.RD ...

  2. 注解的形式与xml文件的形式完成事务管理及xml文件的配置

    需要的jar包: c3p0-0.9.2.1.jar com.springsource.net.sf.cglib-2.2.0.jar com.springsource.org.aopalliance-1 ...

  3. Java基础笔记1

    java (开源,跨操作系统)j2ee jre java基础 javaoop java高级 JDK(JAVA developer Kitool): java开发工具 (开发人员使用) JRE(java ...

  4. .3-Vue源码之数据劫持(1)

    写了一半关机了,又得重新写,好气. 上一节讲到initData函数,其中包含格式化.代理.监听. // Line-3011 function initData(vm) { var data = vm. ...

  5. Python 爬虫:把廖雪峰教程转换成 PDF 电子书

    写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天尝试写一个爬虫,将廖雪峰老师的 ...

  6. linux GCC 编译多个.c/.h文件

    基本认识: #include <xxx>:首先去系统目录中找头文件,如果没有在到当前目录下找.像标准的头文件 stdio.h.stdlib.h等用这个方法. #include " ...

  7. linux学习(六)绝对路径、相对路径、cd、mkdir、rmdir、rm

    一.绝对路径 就是从根开始的,如:/root./usr/local. 二.相对路径 相对于当前路径的,比如我们在当前路径下建立了一个a.txt. [root@iZ25lzba47vZ ~]# pwd ...

  8. 关于NIM博弈结论的证明

    关于NIM博弈结论的证明 NIM博弈:有k(k>=1)堆数量不一定的物品(石子或豆粒…)两人轮流取,每次只能从一堆中取若干数量(小于等于这堆物品的数量)的物品,判定胜负的条件就是,最后一次取得人 ...

  9. C++编程求数组中重复的数字

    题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为7的 ...

  10. 使用Lock锁生产者消费者模式

    package com.java.concurrent; import java.util.concurrent.locks.Condition; import java.util.concurren ...