目录

  • 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. JAVA基础知识总结:九

    二.面向对象特性之继承 1.什么是继承? 如果两个或者两个以上的类具有相同的属性和方法,我们可以抽取一个类出来,在抽取出来的类中声明各个类中公共的部分 被抽取出来的类-------父类,基类,超类 两 ...

  2. Stack by pointer

    前言:因为栈的很多操作是基于表的,所以这篇文章里的例程就不再大面积地写注释了,有不理解的地方可以翻看之前的链表笔记,或者直接写在评论区. 咳咳,说到这个栈,很多人乍听之下感觉很陌生.卧槽这是什么玩意. ...

  3. oracle实用基础

    Oracle修改字段名 alter table 表名 rename column 旧字段名 to 新字段名例子:alter table T_STUDENT rename column NAME to ...

  4. Element ui表格展示多张图片问题

    显示一张图片的方法: <el-table-column label="头像" width="100"> <template scope=&qu ...

  5. Java调用C++类库--JNI

    JNI是Java平台中的一个重要的功能,这里我把我做的Demo总结一下,分享一下,我会把每个步骤尽量的详细的展现出来. 这里我就不讲解JNI的原理了,google,百度一下,到处都是 好了,直接来讲步 ...

  6. ubuntu 常用软件安装

    安装ubuntu远程图形界面 sudo apt-get install xrdp (sudo apt-get install ..  用于安装软件的命令 ) sudo apt-get install ...

  7. 一个简单大方的赞后+1,踩后-1js动画效果

    js部分 <script type="text/javascript"> <!-- $(document).ready(function(e) { $('a.zh ...

  8. JavaUtil_04_验证码生成器

    一.原理 验证码其实就是随机串.原理上可分为两种: 1.简单的验证码 直接通过字母和数字的ASCII码生成.本文采用的验证码就是这种. 2.复杂的验证码 通过一个随机串,一个指定串(如accesske ...

  9. HTTP中的Range: bytes=0-

    HTTP中的Range就是分段请求字节数,也是大家经常说的断点续传.Range头域可以请求实体的一个或者多个子范围,Range的值为0表示第一个字节,也就是Range计算字节数是从0开始的 表示第二个 ...

  10. 页面第一次加载,JS没有效果,刷新一下就好了

    问题详述:页面跳转的时候,第一个第二个页面都没有问题,跳到第三个页面,JS脚本没有起作用,刷新一下就好了. 1.猜测:第一个页面和第二个页面的JS,会对第三个页面产生影响,(因为之前没有这个问题,只改 ...