• 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存储了下来,一旦声明的数字在这个范围,默认从小整形缓冲区取)

  • 相关阅读:
    ConflictingBeanDefinitionException
    2023南京中医药大学计算机考研信息汇总
    SpringMVC总结_从RESTful到拦截器
    Linux 中的 cd 命令及示例
    Linux shell编程学习笔记59: ps 获取系统进程信息,类似于Windows系统中的tasklist 命令
    Axure学习之路01——元件介绍
    第七章:最新版零基础学习 PYTHON 教程—Python 列表(第五节 -检查Python列表中是否存在元素)
    同步异常、External abort、Serror、prefetch abort、data abort的区别
    CentOS安装kafka单机部署
    Python deepFM推荐系统,推荐算法,deepFM源码实战,deepFM代码模板
  • 原文地址:https://blog.csdn.net/m0_58679504/article/details/126038524