• java编程基础总结——15.包装类


    包装(封装)类:

            类,对应着8种基本数据类型设计的
            java是一种面向对象的语言,之前学过8种基本数据类型,但没有提过过有对象,但有时候往往需要用这种对象。如"123"-->123,无法通过强转获得。(123-->"123"可以)

    //将123-->"123"(自动类型转换)

    jshell> int a = 123
    a ==> 123

    jshell> a + ""
    $2 ==> "123"

    //将"123"-->123

    jshell> String b = "123"
    b ==> "123"

    jshell> (int)b
    |  错误:
    |  不兼容的类型: java.lang.String无法转换为int
    |  (int)b

    java为了解决这样一系列对于基本数据类型更强大的功能操作,专门包装了8个数据类型对应的对象。是对象就有类,有类有属性,有方法。如

    //返回当前类型的最大值

    jshell> Byte.MAX_VALUE
    $6 ==> 127

    //返回当前类型的最小值

    jshell> Byte.MIN_VALUE
    $7 ==> -128

    jshell> Integer.parseInt("123")
    $4 ==> 123

    jshell> Double.parseDouble("3.141592653574")
    $5 ==> 3.141592653574

      8种数据类型对应8种包装类:

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

        下面以Integer为例讲解。

        有了包装类,基本数据类型的功能得的了非常大强化和扩展。

    注意: 包装类和基本数据类型不是一个东西。

                包装类是对象(对象是在堆中,有地址)。基本数据类型是常量(常量池中)

    1. package com.openlab.day14;
    2. public class TestWrapper {
    3. public static void main(String[] args) {
    4. Integer i = new Integer(123);
    5. int ii = 123;
    6. System.out.println(i == ii);
    7. //false(在jdk9之前,之后过时) -128~127为true
    8. System.out.println(i.equals(ii));//通过这种方式去判断
    9. }
    10. }

    但是我们可以认为是一种东西

    Integer a = 1000;

    int b = 1000;


    拆箱和装箱功能
        拆箱:将包装类的对象转换为基本数据类型    Integer i = 100; ==> int ii = i;
        装箱:将基本数据类型包装为包装类              double a = 3.14 ==> Double b = a;

        在jdk5.0之前,拆装箱,必须调用对应的方法来来完成

    Integer i = 100;

    int ii = i.intValue();    // 拆箱

    在jdk5.0之后,所有的所有的拆箱和装箱功能会自动完成。

    int a = 10;
    Integer b = new Integer(a);    // 9以及之后版本过时了,不建议使用

    Integer bb = Integer.valueof(a); // 建议使用这个方法。静态方法。传基本数据类型,包装成包装类

    Integer i = new Integer(123);

    int ii = 123;

    System.out.println(i == ii);//jdk5.0之后这种方法也可以直接判断(做了自动拆装箱,转化成int去进行判断)

    System.out.println(i.intValue() == ii);//jdk5.0之前,需要手动

    1. package com.openlab.day14;
    2. public class TestWrapper {
    3. public static void main(String[] args) {
    4. Integer i = new Integer(123);
    5. int ii = 123;
    6. //System.out.println(i == ii);
    7. //false(在jdk9之前,之后过时) -128~127为true
    8. System.out.println(i.equals(ii));//通过这种方式去判断
    9. Integer a = 1000;
    10. Integer b = 1000;
    11. System.out.println(a == b);
    12. }
    13. }

    将a和b 的值变动

    1. package com.openlab.day14;
    2. public class TestWrapper {
    3. public static void main(String[] args) {
    4. Integer i = new Integer(123);
    5. int ii = 123;
    6. //System.out.println(i == ii);
    7. //false(在jdk9之前,之后过时) -128~127为true
    8. System.out.println(i.equals(ii));//通过这种方式去判断
    9. //java内存管理中,小整形缓冲区(在方法区中)(将-128~127存储了下来,一旦声明的数字在这个范围,默认从小整形缓冲区取)
    10. Integer a = 127;
    11. Integer b = 127;
    12. System.out.println(a == b);
    13. }
    14. }

     

    java内存管理中,小整形缓冲区(在方法区中)(将-128~127存储了下来,一旦声明的数字在这个范围,默认从小整形缓冲区取)

  • 相关阅读:
    Live800:一个优秀的客服应具备哪些技能?
    STM32F103标准库开发---SPI实验---W25Qxx系列外部Flash芯片
    欧拉公式-上帝创造的公式
    LeetCode //C - 918. Maximum Sum Circular Subarray
    华大智造上市后首份财报:扣非后净利4403万 同比降45%
    无穷滚动加载(v-infinite-scroll)
    NumPy(1)
    PHP跌出前十,Python依然霸占榜首,C#有望摘得年度编程语言 TIOBE 12 月编程语言排行榜
    随笔记:重新认识 else if
    Qt调用工业相机之海康威视相机SDK【回调取流的使用】(完整版)
  • 原文地址:https://blog.csdn.net/m0_58679504/article/details/126038524