Java面向对象中 包装类(封装类)的详解

简介: Java面向对象中 包装类(封装类)的详解

包装类的使用:

1.java提供了8种基本数据类型的封装类,使得基本数据类型的变量具有了类的特征。

图解如下:

2.要点:掌握基本数据类型,包装类,String三者之间的转换。

2.1 基本数据类型—>包装类:调用包装类的适配器。装箱

Example:

public class WarpperTest {
    public static void main(String[] args) {
            int i=10;
            Integer in1=new Integer(i);
            Integer integer2 = Integer.valueOf(i);
//        System.out.println(i.toString); //报异常
            System.out.println(in1.toString()); //10
            Boolean b=new Boolean("TRue");
            System.out.println(b); //true
    }
}

2.2 包装类—>转换为基本数据类型,基本数据类型XXX调用XXXValue()方法。 拆箱

Example:

Integer a=new Integer(10);
        int c = a.intValue();
        System.out.println(c+1);//11
        Boolean d = new Boolean("R");
        boolean e = d.booleanValue();
        System.out.println(e+"u");//falseu
        Float f=new Float("15.2");
        float g=f.floatValue();
        System.out.println(g+1);//16.2

2.3.JDK5.0 新特性:自动装箱,自动拆箱

Example:

//自动装箱
        int h=5;
        Integer y=h; //底层使用的是Integer.valueOf(h)
        boolean r=true;
        Boolean r1=r;
        //自动拆箱
        System.out.println(y.toString());
        int x=y; //底层调用的是intValue()方法
        boolean r2=r1;

2.4.基本数据类型,包装类—>String类型

public class DayTest {
    public static void main(String[] args) {
        int a=10;
        boolean b=true;
        //方式1:连接运算符
        System.out.println(a+"");
        System.out.println(b+"");
        //方式2:调用String的valueOf(XXX xxx)
        int c=11;
        String c1=String.valueOf(c);
        boolean d=true;
        String d1=String.valueOf(d);
        System.out.println(d1+a);
        float e=15.6f;
        String e1=String.valueOf(e);
        System.out.println(e1);
    }
}

2.5. String类型–>包装类,基本数据类型

String f="123";
        int f1=Integer.parseInt(f);
        System.out.println(f1);
        //报异常
       /* String h="123你好";
        int h1=Integer.parseInt(h);
        System.out.println(h1);*/
        String q="true1";
        boolean q1=Boolean.parseBoolean(q);
        System.out.println(q1);  //输出false

包装类Integer和Character的常用方法如下:

public class WrapperMethod {
    public static void main(String[] args) {
        System.out.println(Integer.MAX_VALUE);//最大值
        System.out.println(Integer.MIN_VALUE); //最小值
        System.out.println(Character.isDigit('1'));//判断是不是数字
        System.out.println(Character.isLetter('a'));//判断是不是字母
        System.out.println(Character.isUpperCase('a'));//判断是不是大写
        System.out.println(Character.isLowerCase('a'));//判断是不是小写
        System.out.println(Character.isWhitespace('a')); //判断是不是空格
        System.out.println(Character.toUpperCase('a')); //转成大写
        System.out.println(Character.toLowerCase('A'));//转成小写
    }
}

输出结果如下:

2147483647
-2147483648
true
true
false
true
false
A
a

Integer的创建机制如下,具体注释已经在代码中给出:

public class WrapperExercise {
    public static void main(String[] args) {
        Integer i = new Integer(1);
        Integer j = new Integer(1);
        System.out.println(i == j); //false
        //这里主要看范围-128~127 就是直接返回,否则就要new Integer(i)
        /*
        解读:
        1、如果i在IntegerCache.low(-128)到IntegerCache.high(127),就直接从数组返回
        2、如果不在-128~127,就直接new Integer(i)
        public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
         */
        Integer m = 1; //底层Integer.valueOf(1) ->阅读源码
        Integer n = 1;
        System.out.println(m == n); //true
        Integer x = 128;
        Integer y = 128;
        System.out.println(x == y); //false
    }
}

Integer面试题的详解

public class WrapperExercise02 {
    public static void main(String[] args) {
        Integer i1 = new Integer(127);
        Integer i2 = new Integer(127);
        System.out.println(i1 == i2); //false
        Integer i3 = new Integer(128);
        Integer i4 = new Integer(128);
        System.out.println(i3 == i4); //false
        Integer i5 = 127;
        Integer i6 = 127;
        System.out.println(i5 == i6); //true
        Integer i7 = 128;
        Integer i8 = 128;
        System.out.println(i7 == i8); //false
        Integer i9 = 127;
        Integer i10 = new Integer(127);
        //i9 是从数组中取出的  而i10是new 出来的 所以不是同一个对象
        System.out.println(i9 == i10); //false
        Integer i11 = 127;
        int i12 = 127;
        //只要有基本数据类型,判断的是值是否相同
        System.out.println(i11 == i12);//true
        Integer i13 = 128;
        int i14 = 128;
        System.out.println(i13 == i14);//true
    }
}

以上是包装类的详解,供大家参考学习,有不当之处,可在评论区指正!


目录
相关文章
|
16天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
39 17
|
8天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
11天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
35 4
|
12天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
52 4
|
12天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
29 2
|
17天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
21天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
21天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
19天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
13 2
|
21天前
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
23 3