• 前言

    在Java语言的学习过程中,我们逐渐的理解了Java面向对象的思想,与类和对象的应用.但是在基本数据类型的使用上,我们无法将其定义为一个对象,通过使用对象的方法来使用它们,但是Java语言的思想又是面向对象的.那么在Java语言中,是否能够解决这个问题,使基本数据类型能够以对象的形式使用呢.答案当然是有的,本篇文章就基于这点介绍学习一下Java的包装类.

  • 什么是包装类

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

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

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

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

关于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类做说明.

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)方法

其中需要注意的是,在以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类

我们可以发现,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类型的包装类.

可以看到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));
}


  • Double类

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

可以看到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等基本数据类型(非字符及字符串类型)的方法.

这些发方法就是:

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

[java初探09]__关于java的包装类的更多相关文章

  1. [java初探10]__关于数字处理类

    前言 在我们的日常开发过程中,我们会经常性的使用到数字类型的数据,同时,也会有众多的对数字处理的需求,针对这个方面的问题,在JAVA语言中.提供解决方法的类就是数字处理类 java中的数字处理类包括: ...

  2. [Java初探07]__关于面向对象的简单认识

    前言 类和对象,在我们学习Java语言的过程中,它们无时无刻不存在着,在我们还远未详细弄明白它们的意义之前,在我们不知不觉的下意识里,我们都会直接或间接的用到它们,这是因为Java是一门面向对象的语言 ...

  3. [Java初探08]__简单学习Java类和对象

    前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使 ...

  4. [java初探06]__排序算法的简单认识

    今天,准备填完昨天没填的坑,将排序算法方面的知识系统的学习一下,但是在简单的了解了一下后,有些不知如何组织学习了,因为排序算法的种类,实在是太多了,各有优略,各有适用的场景.有些不知所措,从何开始. ...

  5. [java初探05]__数组的简单认识及Arrays类的常用方法

    数组是具有相同数据类型的一组数据的集合.在程序设计中,这样的集合称之为数组.数组的每个元素都具有相同的数据类型,在Java中数组也被看为一个对象. 在里,了解了数组的定义之后, 我们知道了,数组并不是 ...

  6. [Java初探04]__字符串(String类)相关

    前言 接下来将暂时将重心偏移向实际操作,不在将大量时间花费在详细的知识点整理上,将会简略知识总结笔记的记录,加强实际练习的时间,实例练习篇也不再同步进行,我会将部分我觉得重要的源码更新在每节知识点后面 ...

  7. [java初探总结篇]__java初探总结

    前言 终于,java初探系列的学习,要告一阶段了,java初探系列在我的计划中是从头学java中的第一个阶段,知识主要涉及java的基础知识,所以在笔记上实在花了不少的功夫.虽然是在第一阶段上面花费了 ...

  8. java初探native

    最近碰见一个java中一个native关键字,不知道是干什么的,如下: public native String FileName(String strURL);     static{        ...

  9. java验证身份证号码是否有效源代码 wn25的头像 wn25 23 2015-01-04 20:09 6 基本信息 Java × 1 浏览

    原文:http://www.open-open.com/code/view/1420373343171 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 ...

随机推荐

  1. Js学习(3) 数组

    数组本质: 本质上数组是特殊的对象,因此,数组中可以放入任何类型的数据,对象,数组,函数都行 它的特殊性在于键名是按次序排列好的整数 从0开始,是固定的,不用指定键名 如果数组中的元素仍是数组,则为多 ...

  2. Aria2+WebUI,迅雷倒下之后的代替品

    Aria2+WebUI,迅雷倒下之后的代替品 (2017-07-24 12:56:28) 转载▼   分类: 软件 最近迅雷越来越作死了,砍第三方远程下载,强推迅雷9喂用户的屎,下载资源能砍就砍,以前 ...

  3. BZOJ4380 Myjnie / Luogu3592 [POI2015]MYJ-区间DP

    Description 有$n$家洗车店从左往右排成一排,每家店都有一个正整数价格$p[i]$. 有$m$个人要来消费,第$i$个人会驶过第$a[i]$个开始一直到第$b[i]$个洗车店,且会选择这些 ...

  4. 在excel中如何利用vba通过网址读取网页title(网址是https的)?

    昨天在百度知道上提了这个问题,我保存了些百度知道我回答的网址,想利用excel直接读取出网址的title,请问vba代码怎么写?(要支持https的) excel大神帮我回答了,在这记录下: Func ...

  5. Tomcat架构解析(五)-----Tomcat的类加载机制

    类加载器就是根据类的全限定名(例如com.ty.xxx.xxx)来获取此类的二进制字节流的代码模块,从而程序可以自己去获取到相关的类. 一.java中的类加载器   1.类加载器类别 java中的类加 ...

  6. Vue入门---常用指令详解

    Vue入门 Vue是一个MVVM(Model / View / ViewModel)的前端框架,相对于Angular来说简单.易学上手快,近两年也也别流行,发展速度较快,已经超越Angular了.比较 ...

  7. bzoj4556(sam)

    二分答案,(具体可见http://blog.csdn.net/neither_nor/article/details/51669114),然后就是判定问题,sa和sam都可以做,用sam写了一下,先用 ...

  8. _ZNote_Objective-C_用终端编译OC程序

    某些情况下,仅仅想写一些简单的代码,可以不用Xcode,仅仅使用终端即可编译OC程序. 打开终端. 输入vi test.m 输入一下代码: #import <Foundation/Foundat ...

  9. Build.gradle的详细配置说明

    转自:http://blog.csdn.net/u012246458/article/details/51722624 apply plugin: 'com.android.application'/ ...

  10. Navicat for MYSQL 断网时本地连接无法打开,2005错误

    Navicat for MYSQL 断网时本地连接无法打开,2005错误 NO1 提示下图: NO2 解决方法: (1)选中本地连接,右键 连接属性 (2) 将 主机名或IP地址 这一栏改为 127. ...