基本类型包装类的简单入门

4次阅读

共计 2519 个字符,预计需要花费 7 分钟才能阅读完成。

第三阶段 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)

结尾:

如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见, 蟹蟹大家!^_^

如果能帮到你的话,那就来关注我吧!(系列文章均会在公众号第一时间更新)

在这里的我们素不相识,却都在为了自己的梦而努力 ❤

一个坚持推送原创 Java 技术的公众号:理想二旬不止

正文完
 0