什么是包装类?
在Java里一切都是对象,除了Java中的基本数据类型(byte,short,int,long,char,float,double,boolean)不是面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。
-
- a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。
- b、包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。
Auto-box自动装箱功能
什么是Auto-boxing?
首先不说定义,先假设没有Autoboxing和unboxing功能,我们使用包装类就如同一般类一样
这样我们创建对象就要这样:
//1.用平时创建类的方法创建包装类
int x=100;
Integer w_x=new Integer(1000);//符合先声明new对象
double z=500.567;
Double w_z=new Double(456.789);
float f='Y';
Float w_f=new Float('Y');
String w_s=new String("yes");
然后我们如何返回实例的值呢?当然用到方法了:
//2.返回这些的值
System.out.println("----------------");
System.out.println("w_x="+w_z.intValue());
System.out.println("w_z="+w_z.doubleValue());
System.out.println("w_f="+w_f.floatValue());
System.out.println("w_s="+w_s);
/*输出:
w_x=456
w_z=456.789
w_f=89.0
w_s=yes
*/
是不是很麻烦?不麻烦?那就让我们见识一下Autoboxing和unboxing的优点,在JDK1.5之后,有了这个特性
当我们需要使用包装类时候,在语法上首先可以和基本类型一样,但是因为类又有很多方法可以使用,所以
包类的功能增强了不少如下:
//4.JDK 1.5之后的AutoBOX功能
//如基本类型一样复制,自动装箱供转换为 new Integer(xxx);
Integer l1=100;
Double d1=789.123;
Character c1='n';
Boolean b1=false;//只能true或者false
String s1="Auto-box";
//直接拆箱子
System.out.println("----------------");
System.out.println(l1);
System.out.println(d1);
System.out.println(c1);
System.out.println(b1);
System.out.println(s1);
/*输出:
----------------
100
789.123
n
false
Auto-box
----------------
*/
是不是很方便?在赋值时候有了这个特性,编译器自动帮我们完成一些工作。
自动装箱也存在一些特殊性,例如在用"=="我们可以比较两个基本类型是否相等,
那么我们能不能用此比较包装类是否相等呢?
//1.包装类用== 比较大小
System.out.println("----------------");
System.out.println("Integer(2)是否等于Integer(2)? "+(new Integer(2)==new Integer(2)));
//输出 false ,引用类型用==判断只有指向同一个对象才返回true
//Auto-box情况下的不同情形
Integer i5=3;
Integer i6=3;
System.out.println("I6是否等于I5? "+(i6==i5));//返回true
Integer i7=128;
Integer i8=128;
System.out.println("I7是否等于I8? "+(i7==i8));//返回false
/*为什么返回false?
因为Auto把-128~127证书自动装箱为一个Integer实例,还放入一个数组
因此每次赋值在这个范围总是指向这个实例的这个数字,所以指向一个地址,
超过这个范围就要重新创造new一个新的实例
*/
System.out.println("----------------");
----------------
Integer(2)是否等于Integer(2)? false
I6是否等于I5? true
I7是否等于I8? false
----------------
正如注释所说,因为引用型用"=="判断相等的准则是是否指向同一个对象。
我们一般用compare()方法比较两个数的大小关系如下:
//2.用compare方法比较大小
System.out.println("Integer.compare(5,5)="+Integer.compare(5,3));//前>后返回1
System.out.println("Double.compare(789.321,123.789)="+Double.compare(789.123,123.789));
System.out.println("Boolean.compare(true,true)="+Boolean.compare(true,true));
/*
Integer.compare(5,5)=1
Double.compare(789.321,123.789)=1
Boolean.compare(true,true)=0
*/
在Autoboxing中,我们可以进行运算或者转换
/5.包装类的一些方法
//利用包装类构造器和静态方法实现字符串与Integer的转换
System.out.println("----------------");
String s2="123";
int it1=Integer.parseInt(s2);
int it2=new Integer(s2);
System.out.println("it1="+it1+" it2="+it2);
String s3="563.236";
float ft1=Float.parseFloat(s3);
float ft2=new Float(s3);
System.out.println("ft1="+ft1+" ft2="+ft2);
/*
----------------
it1=123 it2=123
ft1=563.236 ft2=563.236
*/
//6.基本类型转换为字符串
System.out.println("----------------");
String s4=String.valueOf(123.456f);
System.out.println("s4="+s4);
String s5=String.valueOf(636.56);
System.out.println(s5);
String s6=String.valueOf(true);
System.out.println(s6);
/*
----------------
s4=123.456
636.56
true
----------------
*/
//7.包装类型的运算
int i99=10;
Integer i9=789;
Double d9=i9+789.652;//自动拆箱
System.out.println(d9);
Short s9=123;
Double d10=(double)i9+(double)s9;//不进行转换的话会提示并非Double型,不能通过编译
System.out.println(d10);
总结:
在许多情况下包装与解包装是由编译器自行完成的,给编码者带了很多便利性。
作者:YangGan
出处:http://blog.csdn.net/incyanggan
本文基于署名
2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).
分享到:
相关推荐
总结,包装类在Java中扮演着重要角色,它们使得基本数据类型能够适应面向对象的环境,提供了更丰富的功能,同时也优化了性能。理解和熟练使用包装类及其转换方法,对于编写高质量的Java代码至关重要。
标题中的"wrapper-windows-x86-64-3.5.14-windows系统服务打包,64位可用"指的是一个特定版本的Java可执行包装器(Wrapper),它用于将Java应用程序转换为Windows服务,以便在操作系统启动时自动运行。这里的"3.5.14...
"wrapper-windows-x86-64-3.5.14"是TNT4J-Wrapper项目的一个版本,它提供了一种简便的方法,将Java应用程序包装成Windows或其他操作系统下的服务。该工具支持32位和64位环境,本文以64位版本为例,其核心是通过一个...
@ vue / web-component-wrapper 包装并将Vue组件注册为自定义元素。兼容性。 不支持IE11及以下版本。...用法dist/vue-wc-wrapper.js :此文件为ES模块格式。 这是捆绑程序的默认导出,可以在带有<script type="mo
在Java编程语言中,包装类(Wrapper Classes)扮演着至关重要的角色,它们是Java为每种基本数据类型提供的一种对象表示形式。这些包装类使得基本数据类型能够参与到面向对象的编程中,如方法参数传递、集合操作等。...
本篇将深入探讨"wrapper-linux-x86-64-3.5.55 社区版"这个软件包,它主要用于在Linux环境下运行Java应用程序。Wrapper技术是将Java程序封装到一个可执行的系统服务或守护进程中,使其能够更方便地管理、监控和自动化...
COLLECT_LTO_WRAPPER=d:/eclipse/cross/arm-2014.05-29/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/lto-wrapper.exe Target: arm-none-linux-gnueabi Configured with: /scratch/maciej/arm-linux-2014.05-...
在压缩包`wrapper-windows-x86-32-3.5.9`中,通常会包含以下组件: 1. `wrapper.exe`:这是主执行文件,用于启动和管理Java服务。 2. `wrapper.dll`:这是与`wrapper.exe`一起工作的动态链接库,实现与Java应用程序...
- `wrapper.java.classpath`:设定类路径。 - `wrapper.java.library.path`:指明Wrapper库文件位置。 - `wrapper.java.mainclass`:指定主类。 - `wrapper.app.parameter`:传递给应用的参数。 - `wrapper.nt...
在Java编程语言中,接口(Interface)和包装类(Wrapper Class)是两个核心概念,它们在实际开发中扮演着至关重要的角色。接口提供了一种定义规范的方式,而包装类则是基本数据类型与对象世界之间的桥梁。现在让我们...
mybatis-plus-sample-reduce-springmvc: 简化掉默认mapper类示例(Spring MVC版本) mybatis-plus-sample-generator: 代码生成器示例 mybatis-plus-sample-crud: 完整 CRUD 示例 mybatis-plus-sample-wrapper: 条件...
综上所述,Java AWT包中的Font类、包的使用、Button类以及Graphics类是Java面向对象程序设计中非常重要的概念。掌握这些基础知识对于开发者来说至关重要,可以帮助他们更高效地编写出高质量的Java应用程序。
为了解决这个问题,我们引入了"Astyle-java-wrapper",一个真正简单的AStyle Java包装器,它使得AStyle在Java环境中的集成和使用变得更为便捷。 "Astyle-java-wrapper"的核心目标是将AStyle的强大功能封装进一个...
"wrapper-windows-x86-64-3.5.15.zip" 文件是一个针对Windows操作系统64位架构的封装程序,版本为3.5.15。在IT领域,"Wrapper"通常指的是一个软件组件,它允许应用程序或者服务在不同的环境中运行,或者提供额外的...
为了使原始类型能够参与面向对象的编程,Java设计了八种对应的包装类(Wrapper Classes):Byte、Short、Integer、Long、Float、Double、Character和Boolean。这些包装类将原始类型封装成对象,使得我们可以使用对象...
打包程序 通过简单的Java“ SProcService”接口使PostgreSQL存储过程(SProcs)可用的库,包括自动对象序列化和反序列化(使用typemapper和Convention-over-configuration)。 支持水平数据库分片(分区/访问逻辑...
Java Service Wrapper 使用总结 Java Service Wrapper 是一种可以将 Java 应用程序发布为可安装的服务的解决方案,它提供了一种简单的方式来将 Java 应用程序打包成一个独立的服务。下面是 Java Service Wrapper ...
- `wrapper.java.mainclass`:设置为`org.tanukisoftware.wrapper.WrapperSimpleApp`。 - `wrapper.java.classpath`:添加你的SpringBoot应用的jar文件路径。 - `wrapper.java.additional.*`:设置Java启动参数,...
情景:从项目中拿到一个客户的demo工程,或者导入一个别人的工程,编译时出现 Error:No such property: GradleVersion for class: JetGradlePlugin: 原因:这是gradle的版本太高导致的 解决办法: 第一步:打开...
Java WkHtmlToPdf包装器 命令行工具的基于Java的包装器。 顾名思义,它使用WebKit将HTML文档转换为PDF。要求必须已安装并且可以在您的系统上工作。包装项目依赖确保已将Java Wrapper依赖项添加到项目中。 如果您使用...