第三阶段-Java常见对象:【第六章 基本类型包装类】

(一)

基本类型包装类

我们提出一个需求,将520的二进制、八进制、十六进制算出来,对于这种基本类型的一些操作,包装类就可以很好地解决这些问题。

  public class IntegerDemo {
      public static void main(String[] args) {
          int love = 520;
  //转换为二进制
          System.out.println(Integer.toBinaryString(love));
  //转换为八进制
          System.out.println(Integer.toOctalString(love));
  //转换为十六进制
          System.out.println(Integer.toHexString(love));
      }
  }
  //运行结果
  1000001000
  1010
  208

将基本数据类型封装成对象的的好处在于可以在对象中定义更多的功能方法操作该数据

常用的操作之一:用于基本数据类型与字符串之间的转换

例如:常见进制的转换

Public Static String toBinaryString(int i)

为了对基本数据类型进行更多的操作,更方便的操作,Java针对每一种数据类型都提供了对应的类类型,包装类类型。

  · byte   Byte
  · short   Short
  · int    Integer
  · long   Long
  · float   Float
  · double   Double
  · char   Character
  · boolean  Boolean

下面的内容我们使用常见的Integer类型来讲解

(一) Integet类

Integer类的构造方法

  public class IntegerDemo2 {
      public static void main(String[] args) {
          int love = 520;
          Integer love2 = new Integer(love);
          System.out.println(love2);
       
  //由数字组成的字符串也可以被转换为Integer
          String love3 = "520";
          Integer love4 = new Integer(love3);
          System.out.println(love4);
      }
  }

通过包装类的一些方法可以很便捷的解决很多实际问题,比如String和int类型的相互转换

(二)String和int的相互转换

(1) int → String

  package cn.bwh_02_IntString;
  
  public class IntStringDemo {
      public static void main(String[] args) {
          int number = 520;
  //方式一:拼接字符串
          String s1 = "" + number;
          System.out.println(s1);
  
  //方式二(推荐方法)任何类型的数据转换成字符串
          String s2 = String.valueOf(number);
          System.out.println(s2);
  
  //方式三(最麻烦)
          Integer i = new Integer(number);
          String s3 = i.toString(number);
          System.out.println(s3);
  
  //方式四
          String s4 = Integer.toString(number);
          System.out.println(s4);
          
      }
  }

(2) String → int (数字组成的字符串)

  package cn.bwh_02_IntString;
  
  public class StringIntDemo {
      public static void main(String[] args) throws Exception{
          String s = "520";
  //方式一
          Integer i = new Integer(s);
          int x = i.intValue();
          System.out.println(x);
  
  //方式二(推荐方法)
          int y  = Integer.parseInt(s);
          System.out.println(y);
      }
  }

(三) 两个JDK 5 的新特性

(1) 自动装箱和自动拆箱(JDK 5新特性)

在我想要使用包装类的一些方法的时候,我可以通过基本类型包装类的构造方法将值传入,JDK5后的新特性就为我们大大的简化了一些麻烦的步骤

  Integer a = 1;
  //这就是一个自动装箱,如果没有自动装箱的话,需要这样
  Integer a = new Integer(1)
  
  int b = a;
  //这就是一个自动拆箱,如果没有自动拆箱的话,需要这样:
  int b = a.intValue()
  
  这样就能看出自动装箱和自动拆箱是简化了基本数据类型和相对应对象的转化步骤

(2) 缓存池(JDK 5新特性)

谈到数值顺便提一提缓存池问题

在于在Java 5以后,整型对象在内部实现中通过使用相同的对象引用实 现了缓存和重用。Integer类型对于-128-127之间的数字是在缓冲区取的,所以对于在这个范围内的数值用双等号比较是一致的,因为对应的内存地址是相同的。但对于不在这区间的数字是在堆中new出来的,所以地址空间不一样,也就不相等。

(四) Character类

Character类对象中包装一个基本类别char的值此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。

  //判断给定的字符是否是大写字符
  public static boolean isUpperCase(char ch)
  
  //判断给定的字符是否是小写字符
  public static boolean isLowerCase(char ch)
  
  //判断给定的字符是否是数字字符
  public static boolean isDigit(char ch)
  
  //把给定的字符串转换为大写字符
  public static boolean toUpperCase(char ch)
  
  //把给定的字符串转换为小写字符
  public static boolean toLowerCase(char ch)

原文发布于微信公众号 - 理想二旬不止(ideal-20)

原文发表时间:2019-06-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券