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

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


目录
相关文章
|
2天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
21天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
21 1
|
1月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
46 8
|
1月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
139 57
|
1月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
24 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
1月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
61 4
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
127 4
|
1月前
|
Java Android开发
Eclipse 创建 Java 类
Eclipse 创建 Java 类
26 0
|
6月前
|
Java 开发者
Java 面向对象新视界:揭秘子类如何“继承”父类精华,再添“创新”之笔
【6月更文挑战第16天】在Java的面向对象世界,子类继承父类的特性,如`Circle`继承`Shape`,展示“is-a”关系。子类不仅保留父类的`color`和`display`方法,还添加了`radius`属性及定制的显示逻辑。这种继承与创新允许代码复用,增强灵活性和可扩展性,使得构建复杂系统变得更加高效和模块化。通过持续的继承与定制,开发者能构建出一系列独具特色的类,充分展现面向对象编程的力量。
157 57