前言
在 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
来源: https://www.cnblogs.com/gemuxiaoshe/p/10674618.html