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

前言

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

什么是包装类

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

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

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

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

3c58a9a3c8d5ec606ec7953e49b9773c.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类做说明.

55317ec97fef922db5bbf388c36f2551.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)方法

674d769a92d42a5ff12b6e7ef8ccea37.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类

a0e5312d6ccd884d05fa3e3365466aaf.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类型的包装类.

6af7b6f54fae1c7c3e8e4547e49dc4e7.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));

}

b28ee8c6016291cb60a91b7464c7c070.png

Double类

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

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

22be0f028cb660f996297ff24c972fd0.png

这些发方法就是:

d0b1ef0fcb58389d5a1a0032b6cb9e17.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

能跑java的服务器_一台java服务器可以跑多少个线程?

一台java服务器能跑多少个线程&#xff1f;这个问题来自一次线上报警如下图&#xff0c;超过了我们的配置阈值。京东自研UMP监控分析打出jstack文件&#xff0c;通过IBM Thread and Monitor Dump Analyzer for Java工具查看如下&#xff1a;IBM Thread and Monitor Dump Analyz…

希尔排序基础java代码_java 算法之希尔排序详解及实现代码

摘要&#xff1a;这篇Java开发技术栏目下的“java 算法之希尔排序详解及实现代码”&#xff0c;介绍的技术点是“希尔排序详解、实现代码、希尔排序、Java、实现、代码”&#xff0c;希望对大家开发技术学习和问题解决有帮助。java 算法之希尔排序一、思想希尔排序&#xff1a;…

java设置属性的取值范围是多少_jvm-Java系统属性的范围

系统属性的范围至少从阅读Properties方法的API规范后&#xff0c;我无法获得关于是否由JVM的所有实例共享系统属性的答案。为了找出答案&#xff0c;我编写了两个快速程序&#xff0c;这些程序将使用相同的键但不同的值通过Properties设置系统属性&#xff1a;class T1 {public…

centos卸载内核_CentOS 中内核模块的加载和卸载

Linux操作系统的核心具有模块化的特性&#xff0c;在编译核心时&#xff0c;我们可以将系统功能编译成一个个单独的模块&#xff0c;待需要时再分别载入。lsmodlsmod命令用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。insmodinsmod命…

java如何使用配置文件_如何使用java.util.Properties读取配置文件?

当我们有一个使用文本文件存储配置的应用程序且该配置通常为keyvalue格式时&#xff0c;我们可以java.util.Properties用来读取该配置文件。这是一个名为的配置文件示例app.config&#xff1a;app.nameProperties Sample Codeapp.version1.0下面的代码向您展示了如何读取配置。…

php取json子对象属性,php中输出json对象的值(实现方法)

实例如下所示&#xff1a;$json {"report":{"date":"2012-04-10","content":"abcdefght"}};$arr (array) json_decode($json,true);echo 当前日期是&#xff1a;. $arr[report][date];echo "";echo ;print_r($a…

zend optimizer php5.5,PHP_PHP5.3以上版本安装ZendOptimizer扩展,现在很多PHP程序都需要ZendOptimi - phpStudy...

PHP5.3以上版本安装ZendOptimizer扩展现在很多PHP程序都需要ZendOptimizer环境&#xff0c;但是ZendOptimizer在PHP5.2之后已经被支持&#xff0c;那怎么办&#xff0c;Zend也不会这么做&#xff0c;原来PHP5.3开始ZendOptimizer正式改为Zend Guard Loader。Zend Guard Loader的…

php导出excel出现乱码,php导出数据到excel出现乱码的解决办法

代码如下&#xff1a; 代码示例:/*** 导出数据到excel 解决乱码问题* Edit www.#*/function xlsBOF() {echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);return;}function xlsEOF() {echo pack("ss", 0x0A, 0x00);return;}function xlsWriteNumber(…

php mysql 表关联,mysql的多表关联_MySQL

bitsCN.commysql的多表关联数据库中经常要用到多个表的关联。mysql的关联主要包括inner join&#xff0c;left join&#xff0c;right join三种&#xff0c;下面分别加以介绍&#xff0c;并举例说明。顾名思义&#xff0c;inner join集合了两个表的信息&#xff0c;只有都包含的…

ulink php,【转载】15款USB数字界面横向评测(对比顶级CD转盘)!多看点!

还有一则有趣的回帖&#xff0c;一位纽约的烧友认为作者没有尝试何庆华最新的数字界面非常可惜&#xff0c;他认为何先生自主开发的DI-V3电源套件非常之牛&#xff0c;甚至超过了AP1PP的水准(不少人认为这个组合有一点点过于分析&#xff0c;不如何先生的作品水润)。他认为以他…

php取掉字符串第一位支付,php怎样去掉字符串中的第一个字符

php去掉字符串中的第一个字符的方法&#xff1a;可以利用substr()函数来实现。substr()函数可以返回字符串的提取部分&#xff0c;如果失败则返回false&#xff0c;或者返回一个空字符串。substr() 函数返回字符串的提取部分&#xff0c;如果失败则返回 FALSE&#xff0c;或者返…

php自动运维,运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(五)

include("conn.php");include("head.php");include("province.php");?>应用服务编号省份被监控服务器IP监控服务器监控服务当前状态监控时间$SQL"SELECT * FROM gansu_service order by date desc limit 0,13";$querymysql_query(…

matlab lpfilter.m,histroi/statmoments/lpfilter/dftuv的Matlab程序

(摘自冈萨雷斯的《数字图像处理(使用Matlab)》)&#xff1a;l function [P,npix]histroi(f,c,r)% HISTROI Computes the histogram of an ROIin an image.% [P,npix]histroi(f,c,r) computes thehistogram,P,of a% polygonal region of interest (ROI) inimage F.The polygonal…

matlab求距离判别函数,求MATLAB的逐步判别程序 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...

somomo91你不觉得信息量太少了么&#xff1f;摸不着头脑&#xff0c;zhouxiaobo是啊&#xff0c;信息量太少&#xff0c;LZ能详细描述一下你的问题吗或者直接给出你的数据和要求2012jxyl引用回帖:zhouxiaobo at 2013-06-06 09:44:49是啊&#xff0c;信息量太少&#xff0c;LZ能…

php验证码背景图是数字,ThinkPHP5.0.20验证码背景图片

tp5配置验证码相关问题一、验证码背景图片及tp中文验证码5.0.1及以上支持者在应用配置目录(application)下面 extra 子目录内配置captcha.php文件&#xff1b;配置参数如下&#xff1a;2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY,// 验证码字体大小(px)fontSize &g…

php mongo 游标超时,游标在MongoDb游标上超时错误

我刚开始使用mongoDb作为PHP的后端.我只是使用find()查询来满足我的一个需求.我只想要前100个结果,但也想获得总体可用结果.我正在尝试这个.$cursor $this->dbReference->dbName->find($query);if($count ! 0){$cursor->skip($startIndex);$cursor->limit($cou…

matlab二项式拟合,数据回归分析和拟合的Matlab实现

复制代码多元二项式回归1.1、多元二项式回归Matlab命令rstool(x,y,model,alpha)输入参数说明&#xff1a;x&#xff1a;n*m矩阵&#xff1b;Y&#xff1a;n维列向量&#xff1b;alpha&#xff1a;显著性水平(缺省时为0.05)&#xff1b;mode&#xff1a;由下列4个模型中选择1个(…

c mysql安装教程,Mysql安装教程_完成版(吐血式安装)

每次在不同操作系统中安装oracle和mysql这些常规数据库&#xff0c;步骤就那么点儿&#xff0c;但是遇见的错误却是千差万别。。记一次耗时两天的mysql数据库安装新得&#xff0c;有耐心&#xff0c;有毅力&#xff0c;憋生气。1.官网上下载免安装的版本(也就是下载下来直接解压…

查询oracle表上重复的数据库,如何确定Oracle数据库表重复的记录

正在看的ORACLE教程是:如何确定Oracle数据库表重复的记录。 作为一个Oracle数据库开发者或者DBA&#xff0c;在实际工作中经常会遇到这样的问题&#xff1a;试图对库表中的某一列或几列创建唯一索引时&#xff0c;系统提示ORA-01452&#xff1a;不能创建唯一索引&#xff0c;发…

oracle替代变量输出,【Oracle】替代变量

1.替代变量通常而言&#xff0c;替代变量的前缀是&或者&&区别&#xff1a;& 用来创建一个临时变量&#xff0c;每当遇到这个临时变量时&#xff0c;都会提示你输入一个值&&用来创建一个持久变量&#xff0c;当用&&命令引用这个变量时&#xff…