一、概述

因为基本数据类型的变量身上没有任何的方法和属性,所以针对基本数据类型提供了对应的类形式--包装类。

利用这个类产生对象,调用对象身上的方法来操作这个数据。

二、分类

包装类分为以下几种:

基本数据类型 byte short long float double char  boolean int 
包装类 Byte Short Long Float Double Character  Boolean Integer 

三、包装类使用时需要注意点

  1. 除了int和char以外,其他类型的包装类都是将首字母大写。
  2. 自动封箱:将基本类型的变量直接赋值给对应的引用类型的对象。自动封箱在底层调用的是对应类的valueOf方法。
        //1. 将基本类型的变量直接赋值给对应的引用类型的对象过程--自动装箱
//自动封箱在底层会调用对应类身上的valueOf方法
//等价于Integer in = Integer.valueOf(i);
int i = ;
Integer in = i;
double d = 3.6;
Double dou = d;
Double dou = Double.valueOf(d);
System.out.println(dou);

3.对于整数而言,在进行自动封箱的时候,会有判断范围:-128~127,在此范围内的时候,数据会从Integer源码中的一个cache数组中取值,那么此时相同的两个数,其判断值是相同的,因为来自同一个位置。

当数据大于127时,两个包装类的对象比较时,其地址就不一样了,因此不相等。

         int i = ;
Integer i1 = i; //i = 26 时 cache[26 + 128]
Integer i2 = i; //1 = 526 new Integer(526)
//利用 == 进行比较,比较的是地址
System.out.println(i1 == i2);

4.自动拆箱的定义:将引用/包装类型的对象直接赋值给对应的基本数据类型的变量。自动拆箱在底层调用的是对应对象身上的**Value方法。比如:

        //2. 如果是包装类型和基本类型运算的时候,包装类型会自动拆箱 即in 拆箱成了int 500
int i = ;
Integer in = new Integer();
//i = in.intValue();
System.out.println(i == in); //500==500,此时进行了自动拆箱
System.out.println(in);

5.自动封箱和拆箱是JDK1.5的特性之一。

6.包装类产生的对象,只要实际值一样,那么哈希码一定一样。

7.NaN和任何东西都不相等,包括它本身。示例如下

        //0.0/0 = NaN 非数字;和任何东西都不相等,包括自身
System.out.println(0.0/);
System.out.println(Double.NaN == Double.NaN);
System.out.println(Double.isNaN(0.0 / ));

四、String类型和基本数据类型的相互转化

1、将String类型转化为基本数据类型使用包装类对应的parse***方法。

比如将String转化为int:

  int i = Integer.parseInt("-128");
System.out.println(i);
int i = Interget.valueOf("-128");

注意方法一和方法二的区别,方式1返回的是一个int类型;

方法2底层实际上调用了Integer(Integer.parseInt(s))方法,先转化为int类型,然后封箱变为包装类;再将字符串转换为Integer类型,最后经过自动拆箱转化为int类型。这种方式是不可取的。

2、将基本数据类型转化为字符串,直接调用String的valueOf方法即可。

String str3 = String.valueOf(i2);

Java的包装类的更多相关文章

  1. 浅谈Java的包装类

    一.什么是Java包装类 所谓Java包装类,就是将Java中的8种基本数据类型分别包装成为类的形式.包装类与基本数据类型的对应关系如下表所示. 基本数据类型 包装类 byte Byte short ...

  2. Java开发知识之Java的包装类

    Java开发知识之Java的包装类 一丶什么是包装类 包装类的意思就是对基本数据类型封装成一个类.这些类都是Number的子类.区别就是封装数据类型不同.包含的方法基本相同. 具体可以查询JAVA A ...

  3. [java初探09]__关于java的包装类

    前言 在Java语言的学习过程中,我们逐渐的理解了Java面向对象的思想,与类和对象的应用.但是在基本数据类型的使用上,我们无法将其定义为一个对象,通过使用对象的方法来使用它们,但是Java语言的思想 ...

  4. Java学习——包装类

    Java学习——包装类 摘要:本文主要介绍了Java中常用的包装类和基本类型之间的转换,包装类或基本类型和String之间的转换. 部分内容来自以下博客: https://www.cnblogs.co ...

  5. 小白学Java:包装类

    目录 小白学Java:包装类 包装类的继承关系 创建包装类实例 自动装箱与拆箱 自动装箱 自动拆箱 包装类型的比较 "=="比较 equals比较 自动装箱与拆箱引发的弊端 自动装 ...

  6. Java:包装类小记

    Java:包装类 对 Java 中的 包装类 这个概念,做一个微不足道的小小小小记 基本数据&包装类 四类八种基本数据类型: 数据类型 关键字 内存占用 取值范围 字节型 byte 1个字节 ...

  7. Java api 入门教程 之 JAVA的包装类

    Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数 ...

  8. Java 中包装类wrapped type之间以及和primitive type的比较

    注意, 包装类的实例之间比较, 是不能直接用 == 的 public static void main(String[] args) { // TODO Auto-generated method s ...

  9. JAVA的包装类 【转】

    Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数 ...

  10. java的包装类(转)

    Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数 ...

随机推荐

  1. CNN反向传播算法公式

    网络结构(6c-2s-12c-2s): 初始化: \begin{align}\notag W \sim U(- \frac{\sqrt{6}}{\sqrt{n_j+n_{j+1}}} , \frac{ ...

  2. MAC Matlab 中文乱码

    环境:macOS High Sierra 10.13.4 问题:文件中文注释乱码(再次打开文件时) / 控制台输出中文乱码 解决方法: 官网下载补丁(https://ww2.mathworks.cn/ ...

  3. Day3-G - Task HDU4864

    Today the company has m tasks to complete. The ith task need xi minutes to complete. Meanwhile, this ...

  4. IOS switch-case知多少

    1. switch参数类型 switch参数类型要求是integer type,准确来讲,是可以转换成integer的类型, 这包括所有的C基本数据类型((signed/unsigned)char, ...

  5. Git安装及基本配置

    一.在Linux上安装 1.Linux系统安装 使用Linux发布版包含的基础软件包管理工具可以很容易安装Git.例如,在Ubuntu系统上可使用以下指令安装Git: $ sudo apt-get i ...

  6. less在vscode中的配置方式

    1.在vscode插件中下载easy less这个插件. 2.新建项目,分别建两个文件夹存放less和自动编译好的css,页面中引入文件引css就可以了. 3.根据你的文件位置,在用户设置中设置需要配 ...

  7. (编辑状态下)Reset及OnValidate使用

    using UnityEngine; using System.Collections; public class Demo : MonoBehaviour { #if UNITY_EDITOR vo ...

  8. 三 保存客户&分页查询&Spring解决延迟加载问题

    保存客户 Struts2通过模型驱动拿到封装对象,调用业务层将对象传递到持久层,持久层调用Hibernate模版将对象持久化到数据库. 持久层代码实现: 分页查询: 创建PageBean实体类,里面有 ...

  9. Jquery实现功能---购物车

    //需求,勾选选项时,总价格要跟着变,点击添加数量,总价格也要跟着变,全部要动态变化 //代码如下 <!DOCTYPE html> <html> <head> &l ...

  10. arm linux 支持 wifi (wpa_supplicant)

    背景: 公司用的产品主板支持wifi接口,为了加强产品的功能,做wifi的底层支持. 有关知识点:浅谈 Linux 内核无线子系统 概览 主要的流程如下: 内核配置 + 有关驱动的移植 + 软件的移植 ...