目录

  • 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. Linux系列教程(八)——Linux常用命令之压缩和解压缩命令

    前面一篇博客我们讲解了Linux帮助和用户管理命令,对于帮助命令,man 命令能获得命令和配置文件的帮助信息,help命令能获得shell内置命令的帮助信息.我们可以通过which来区分什么是shel ...

  2. oracle赋值问题(将同一表中某一字段赋值给另外一个字段的语句)

    将同一表中某一字段赋值给另外一个字段的语句update jxc_ckmx ckmx1 set ckmx1.ddsl = (select ckmx2.sl from jxc_ckmx ckmx2 whe ...

  3. 使用canvas实现环形进度条

    html代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...

  4. 动态加载js,css(项目中需要的)

    最近做的一个项目需要加入百度统计,大家都知道百度统计在页面引用就是一坨js,实现方法很简单引用到页面就ok了. 那么问题来了,虽然我不知道百度统计的原理是啥,我的测试服引用了百度统计,百度统计账号里面 ...

  5. [译]ASP.NET Core 2.0 视图引擎

    问题 如何在ASP.NET Core 2.0中使用Razor引擎来创建视图? 答案 新建一个空项目,修改Startup.cs,添加MVC服务和请求中间件: public void ConfigureS ...

  6. java语言插入数组中一个数,仍然能够实现排序

    package com.llh.demo; import java.util.Scanner; /** * * @author llh * */ public class Demo16 { /* * ...

  7. C++11 static_assert

    C++11 static_assert C++0x中引入了static_assert这个关键字,用来做编译期间的断言,因此叫做静态断言. 其语法:static_assert(常量表达式,提示字符串). ...

  8. hdu 1520 Anniversary party(入门树形DP)

    Anniversary party Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6926   Accepted: 3985 ...

  9. 【Kafka源码】ReplicaManager启动过程

    在KafkaServer启动过程的入口中,会启动Replica Manager,众所周知,这是一个副本管理器.replica在Kafka中扮演的角色很重要,是保证消息不丢失的一个重要概念. repli ...

  10. 淘宝轮播JS

    taobao首页轮播原生js面对对象封装版 Author:wyf 2012/2/25