文档章节

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

o
 osc_w9s1w4o0
发布于 2019/04/09 02:12
字数 2184
阅读 13
收藏 0
  • 前言 在Java语言的学习过程中,我们逐渐的理解了Java面向对象的思想,与类和对象的应用.但是在基本数据类型的使用上,我们无法将其定义为一个对象,通过使用对象的方法来使用它们,但是Java语言的思想又是面向对象的.那么在Java语言中,是否能够解决这个问题,使基本数据类型能够以对象的形式使用呢.答案当然是有的,本篇文章就基于这点介绍学习一下Java的包装类.

  • 什么是包装类

包装类就是为了使用户能够将基本数据类型视作对象处理而对每个基本数据类型进行重新包装的类.我们可以通过这些类来new一个基本数据类型的对象.从而使基本数据类型也能够视为对象来处理.

我们在前面的学习中了解到,Java语言其实就是基于一套Java的标准类库的,我们编写Java程序就是在其基础上来编程的,我们也知道,一项问题通过面向对象的思想解决,就是要先将其抽象为对象,然后分析其属性和行为,最后封装成类,加入到类库之中,然后通过用户的调用,解决问题.

所以在Java语言中,为了使各种基本数据类型能够当作对象来使用,它给我们提供了各基本数据类型的包装类.

包装类存放在Java类库的java.lang包下:

2019-4-8-02.gif

关于java.lang包:

java.lang是提供利用 Java 编程语言进行程序设计的基础类。最重要的类是Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类)。把基本类型的值当成一个对象来表示通常很有必要。包装器类 Boolean、Character、Integer、Long、Float 和 Double 就是用于这个目的。


  • Integer类 我们知道,整数类型有byte,short,int,long四种.我们回顾一下,byte的大小是一个字节(即如其命名一般只有一byte大小),short则占两个字节(byte)int占四个字节long占八个字节,他们的内存大小关系其实是一个以2为乘数为基础递增的关系.所以在JAVA语言中也有与其对应的包装类,这里就只挑其中最常使用到的int型的包装类Integer类做说明.

2019-4-8-03.png

Integer类在对象中包装了一个iint型的值,该类的对象包含一个int类型的字段.此外该类还提供了几个方法,能够使int型和String型相互转换.同时还有提供了一些处理int类型时非常有用的常量和方法.

  • 构造方法 Integer类提供了两种构造对象的方法.
    • Interger(int number) 该方法以一个int型变量作为参数来获取Interger对象.
    • Interger(String str) 该方法以一个String型变量作为参数创建Interger对象。
    Integer integer = new Integer(123);
    Integer integer1 = new Integer("23");
  • Integer类提供的一些常用方法:
    • toString()方法
    • compareTo()方法
    • eqalus()方法
    • floatvalue()方法
    • valueOf(String str)方法
    • paseInt(String str)方法

2019-4-8-03.gif

其中需要注意的是,在以String类型构建对象的时候,参数不能以真正随意的字符串来定义。而是以字符串的形式,将一段int型数据存放在String类型中,然后传参使用构造方法构建对象。

compareTo方法是在数字上比较两个Integer对象,如果他们相等,返回0;如果对象小于传入的参数对象,则返回负值。反之返回正值。 equals方法比较两个对象是否相等。返回的是boolean型数据。 其他的几个方法则是类型转换,讲对象的类型转换以其他几种基本数据类型输出。

  • valueOf(String str)方法与paseInt(String str)方法的区别就是前者返回的是一个Integer对象,可以调用其方法,后者返回的是一个整数值.
// 将一个String值的数据以Integer对象返回.
        System.out.println(Integer.valueOf(str).toString());
        // 将一个String字符串中的数字以等价的int整数值返回.
        System.out.println(Integer.parseInt(str));

关于整数类型的其他几种类型的包装类于Integer类是类似的。


  • Boolean类

2019-4-8-04.png

我们可以发现,Boolean类中的方法要少的多.

  • 构造方法
    • Boolean(boolean)
    • Boolean(String)
Boolean aBoolean = new Boolean(12<11);
Boolean aBoolean1 = new Boolean("flase");
  • 常用方法 常用方法其实和Integer类似.
 System.out.println(aBoolean.toString());
        //将对象的值以对应的boolean值返回
        System.out.println(aBoolean.booleanValue());
        //valueOf方法
        System.out.println(Boolean.valueOf(str));
        //paresBoolean方法
        System.out.println(Boolean.parseBoolean(str));
        // equals方法
        System.out.println(aBoolean.equals(aBoolean1));

其中valueOf方法与paresBoolean方法的区别也是前者返回的是一个对象,后者返回的是一个boolean值.


  • character类

character类其实就是char类型的包装类.

2019-4-8-05.png

可以看到character类中的方法体众多,这可能也更char型是我们经常使用到的数据类型,并且关于它的操作也非常多的原因.

  • 构造方法
 Character character = new Character('a');
  • Character类的常用方法
    • charvalue()方法
    • compareTo()方法
    • equals()方法
    • toUpperCase(char ch)方法,将字符转换为大写
    • toLowerCase(char ch)方法.将字符转换为小写
    • toString()方法
    • isUpperCase(char ch)方法,判断是否为大写,返回值为boolean型
    • isLowerCase(char ch)方法,判断是否为小写,返回值为boolean型
// 将对象以char型值返回
        System.out.println(character.charValue());
        //以数字比较两个对象
        System.out.println(character.compareTo(character1));
        //equals方法比较两个对象
        System.out.println(character.equals(character1));
        //大小写转换
        System.out.println(Character.toLowerCase(character));
        System.out.println(Character.toUpperCase(character1));
        //判断大小写
        System.out.println(Character.isLowerCase(character));
        System.out.println(Character.isUpperCase(character1));
    }

2019-4-8-06.png


  • Double类 Float类与Double类类似,double与float都是浮点类型,大小分别是float的四字节,double的八字节.这里就只简单看看Double类.

2019-4-8-07.png

可以看到Double的构造方法也是两种,一种参数为double型,一种为String型,其实几个基本数据类型的包装类都很类似,毕竟他们都是为了实现相似的功能,将基本数据类型当做对象来使用.

  • 构造方法
Double aDouble = new Double(12.345d);
Double aDouble1 = new Double("234.3456");
  • 常用方法 常用方法大多和上面了解过的其他包装类的方法类似,这里就不在介绍了.
    • isNaN()方法,如果此double值是非数字值返回flase
 //常用方法
        System.out.println(aDouble1.isNaN());
        System.out.println(aDouble.equals(aDouble1));
        System.out.println(aDouble.compareTo(aDouble1));
        System.out.println(aDouble.floatValue());
        Double.valueOf(aDouble);
        Double.parseDouble(str);

  • Number类 Number类是一个抽象类,它是BigDecimal,BigInteger,Byte,Double,Float,Integer,Long和short这一系列表示数字类型的包装类的父类.Number的子类必须提供将表示的数值转换为byte,double等基本数据类型(非字符及字符串类型)的方法.

2019-4-9-01.png

这些发方法就是:

2019-4-8-08.png

Number类的方法分别被Number各子类所实现,也就是说,在Number类的所有方法中都包含以上几种方法.(这其实就是面向对象的多态性的一种体现)

  • 源代码
package day_4_8;

/**
 * @outhor xiaoshe
 * @date 2019/4/8  - @time 22:26
 * 包装类
 */
public class sty_packgingclass {
    public static void main(String[] args) {
        sty_packgingclass packgingclass = new sty_packgingclass();
        packgingclass.packgingInt();
        packgingclass.packgingBoolean();
        packgingclass.packgingCharacter();
        packgingclass.packgingdouble();

    }
    /**
     * int型的包装类Integer。
     */
    public void packgingInt(){
        String str = "122";
        // 通过int型参数构建Integer对象
        Integer integer = new Integer(234);
        // 通过String型参数构建Integer对象
        Integer integer1 = new Integer("234");
        //直接以对象输出
        System.out.println(integer);
        System.out.println(integer1);
        // 以将对象以其他类型输出
        System.out.println(integer.byteValue());
        System.out.println(integer.floatValue());
        // Integer类提供的几个常用的方法
        // 通过toString方法讲对象以字符串形式输出。
        System.out.println(integer.toString());
        // compareTO方法和equals方法比较两个Integer的值。
        System.out.println(integer.equals(integer1));
        System.out.println(integer.compareTo(integer1));
        // 将一个String值的数据以Integer对象返回.
        System.out.println(Integer.valueOf(str).toString());
        // 将一个String字符串中的数字以等价的int整数值返回.
        System.out.println(Integer.parseInt(str));
    }
    /**
     * Boolean类
     */
    public void packgingBoolean(){
        String str ="flase";
        Boolean aBoolean = new Boolean(12<11);
        Boolean aBoolean1 = new Boolean("flase");
        System.out.println(aBoolean1);
        System.out.println(aBoolean.toString());
        //将对象的值以对应的boolean值返回
        System.out.println(aBoolean.booleanValue());
        //valueOf方法
        System.out.println(Boolean.valueOf(str));
        //paresBoolean方法
        System.out.println(Boolean.parseBoolean(str));
        // equals方法
        System.out.println(aBoolean.equals(aBoolean1));
    }
    /**
     * character类
     */
    public void packgingCharacter(){
        //构造方法实例化对象
        Character character = new Character('A');
        Character character1 = new Character('b');
        // 将对象以char型值返回
        System.out.println(character.charValue());
        //以数字比较两个对象
        System.out.println(character.compareTo(character1));
        //equals方法比较两个对象
        System.out.println(character.equals(character1));
        //大小写转换
        System.out.println(Character.toLowerCase(character));
        System.out.println(Character.toUpperCase(character1));
        //判断大小写
        System.out.println(Character.isLowerCase(character));
        System.out.println(Character.isUpperCase(character1));
    }
    /**
     * Double类
     */
    public void packgingdouble(){
        String str = "123.456d";
        Double aDouble = new Double(12.345d);
        Double aDouble1 = new Double("234.3456");
        //常用方法
        System.out.println(aDouble1.isNaN());
        System.out.println(aDouble.equals(aDouble1));
        System.out.println(aDouble.compareTo(aDouble1));
        System.out.println(aDouble.floatValue());
        Double.valueOf(aDouble);
        Double.parseDouble(str);
    }
}


更新时间: 2019-4-9 2:08

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

如何在Ruby中生成随机字符串 - How to generate a random string in Ruby

问题: I'm currently generating an 8-character pseudo-random uppercase string for "A" .. "Z": 我目前正在为“ A” ..“ Z”生成一个8个字符的伪随机大写字符串: value = ""; 8.times{......

法国红酒甜
今天
20
0
Python中的mkdir -p功能[重复] - mkdir -p functionality in Python [duplicate]

问题: This question already has an answer here: 这个问题在这里已有答案: How can I safely create a nested directory? 如何安全地创建嵌套目录? 25 answers 25个答案 Is there a way...

技术盛宴
今天
15
0
原价500元的认证证书,限时免费考取!

本文作者:y****n 百度云智学院致力于为百度ABC战略(人工智能、大数据、云计算)提供人才生态体系建设,包括基于百度ABC、IoT的课程体系,整合百度优势技术能力的深度学习技术、Apollo无人车...

百度开发者中心
昨天
17
0
在virtualenv中使用Python 3 - Using Python 3 in virtualenv

问题: Using virtualenv , I run my projects with the default version of Python (2.7). 使用virtualenv ,我使用默认版本的Python(2.7)运行项目。 On one project, I need to use Pyth......

富含淀粉
今天
16
0
Python的__init__和self是做什么的? - What __init__ and self do on Python?

问题: I'm learning the Python programming language and I've came across something I don't fully understand. 我正在学习Python编程语言,遇到了一些我不太了解的东西。 In a method ......

javail
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部