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
    }
}

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


目录
相关文章
|
8月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
449 101
|
7月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
311 4
|
7月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
352 5
|
7月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
433 5
|
7月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
380 1
|
7月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
492 1
|
7月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
311 1
|
7月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
356 1
|
8月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
223 1