前言

在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_[java初探09]__关于java的包装类相关推荐

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

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

  2. stringbuilder寻找字符串位置可能存在多个 java_【面试题系列】——Java基础

    本文主要包括Java基础及面向对象相关面试题. 1,Java科普1.1 为什么安装包要分JDK和JRE?1.2 为什么Java语言是跨平台的?1.3 为什么安装完JDK后要设置环境变量?1.4 Jav ...

  3. java 累加 0-9 a-z_JAVA获得包含0-9、a-z、A-Z范围内字符串的的随机数实例

    一.获得0-9,a-z,a-z范围的随机字符串 /** * java获得0-9,a-z,a-z范围的随机数 * @param length 随机数长度 * @return string */ publ ...

  4. Java笔记09——常用类

    常用类 单例模式:是java中的一种设计模式,是优秀的程序员总结的一套比较成熟的健壮的一套规范.有23种,到架构师的时候才可以用到. 特点: 1.私有的构造器 2.静态的成员对象 3.公有的静态方法 ...

  5. sonar java_如何正确配置属性“sonar.java.binaries”?

    我们使用SonarQube 5.1.2使用Ant runner 2.2和 Java pluging 3.12进行分析.我可以成功地分析我的项目.我只是一直收到这个错误: Java bytecode h ...

  6. 西安尚学堂练习09.17|Java编程笔试面试题

    下列哪些类型能被throw语句抛出? A. Error B. Exception C. Throwable D. Object [解]注意Error也是可以被throw的,只是通常Error出现程序就 ...

  7. ultraedit怎么配置java_【转】UltraEdit配置java环境

    Java开发工具配置-UltraEdit 确定你的jdk环境变量配置是正确的. 对于java初学者来说,编译和运行java程序是一件很头疼的东西. 显然,在命令方式下编译和运行java程序用久了,确实 ...

  8. java语言中声明布尔型_【Java初探02】——Java语言基础

    本篇博文就Java语言的一些基本元素进行一些记录和阐述,主要讲解一下Java语言的一些基本构成元素和Java的主类结构. Java语言基础的大致组成 java主类结构 基本的数据类型 变量与常量 运算 ...

  9. 蓝桥杯日期计算java_日期类的使用(java)-蓝桥杯

    蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...

最新文章

  1. 微软熊辰炎:如何利用图神经网络解决半结构化数据问题?
  2. 又一次生产 CPU 高负载排查实践
  3. 限制不能使用最近三次的历史密码
  4. microsoft账号登陆一直在加载_英雄联盟手游下载,附带拳头账号注册教程
  5. Struts1中execute实现过滤控制
  6. JavaScript-封装与继承(两种)
  7. mysql数据库运行性能检查脚本
  8. 手把手教你玩转nginx负载均衡(三)----配置虚拟服务器网络
  9. python报错记录No.1
  10. 八人抢答器讲解_八人智力竞赛抢答器课程设计报告
  11. Android 系统鼠标
  12. [论文阅读] (21)SP21 Survivalism: Systematic Analysis of Windows Malware Living-Off-The-Land (经典离地攻击51)
  13. 阿里巴巴达摩院又被点名表扬了,这一次是要“拯救世界”?
  14. 美通企业周刊 | 中国全球化品牌50强榜单发布;酩帝诗威士忌拍出近21万美元天价...
  15. POJ1655 树重心模板题
  16. Nature Microbiology:植物根系分泌物影响菌群结构
  17. autojs-ocr-easyedge-nodejs
  18. 修改本地项目svn地址
  19. 文献阅读笔记--深度学习图像修复方法综述
  20. 数据仓库---企业信息工厂(EIF)

热门文章

  1. linux 内核 工作队列,Linux内核新旧工作队列机制的剖析和比较
  2. storm apache java_Apache Ignite与Apache Storm(深入)
  3. 【OS】进程同步概念
  4. PAT_B_1011_Java(15分)
  5. thinkphp python_ThinkPhp 5.0 服务器搭建问题总结
  6. linux音量模块,Linux下的音量控制器alsamixer
  7. [图神经网络] 图节点Node表示---GraphSAGE与PinSAGE
  8. build linux kernel
  9. 2021-07-3022
  10. Scala语言将加入宏指令