码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JavaSE——包装类、装箱与拆箱


    目录

    一、基本概念

    1.1 八种包装类及使用场景

    1.2 装箱与拆箱的概念

    二、以Integer包装类为例

     2.1 Integer的构造方法

     2.2 通过常量获取最大值与最小值

     2.3 自动装箱和自动拆箱(非常重要的面试题)

    三、Integer常用方法

        3.1 手动拆箱(过时)

        3.2 静态方法  int parseInt(String)

        3.3  静态方法 十进制转化为二进制字符串

        3.4  静态方法 十进制转化为十六进制字符串

        3.5  静态方法 十进制转化为八进制字符串

    四、 String int Integer 类型互换


    一、基本概念

     1.1 八种包装类及使用场景

       java中八种基本数据类型对应八种包装类型,属于引用数据类型,父类是java.lang.Number,间接继承Object(除了Character、Boolean以外,Character、Boolean直接继承Object)

      使用场景:

        调用某个方法需要传入一个数字,但是数字是基本数据类型,但是方法的参数是Object引用类型,此时便需要包装类

        简言之:八种基本类型不够用,又引入八种基本类型对应的八种包装类型,如下所示

    1.2 装箱与拆箱的概念

      装箱:基本数据类型转化为引用数据类型

      拆箱:引用数据类型转化为基本数据类型

      我们首先看一下Number类中的拆箱方法,这些方法子类都有

    二、以Integer包装类为例

        以Integer类为例,其他是一模一样

       2.1 Integer的构造方法

     如下图所示,当我们使用Integer类时,有下面两个构造方法,分别可传入int类型参数、String类型参数

       本类的toString方法也已经给我们重写好了,不比我们再写

    1. // 直接使用数字 从JDK9(Java9)之后便过期了
    2. Integer x = new Integer(100);
    3. System.out.println(x);
    4. // String类型数字
    5. Integer y = new Integer("555");
    6. System.out.println(y);

     2.2 通过常量获取最大值与最小值

          这两个都是静态属性,其他的类也是这么调用

    1. System.out.println(Integer.MAX_VALUE);
    2. System.out.println(Integer.MIN_VALUE);

     2.3 自动装箱和自动拆箱(非常重要的面试题)

     好消息:JDK1.5(java5)之后,支持自动拆箱与自动装箱

    自动装箱:基本类型类型自动转化为包装类 (底层还是new了一下,依然是引用)

    自动拆箱:包装类自动转化为基本类型 (Number类的方法就用不着了,因为可以直接拆箱)

    更好的方便了编程,解放程序员的双手

    1. // 自动装箱
    2. Integer x=100;
    3. // 自动拆箱
    4. int y =x;

    说明:“==”不会触发自动拆箱机制,只有加减乘除时才可触发

     但是!!!下面这个地方很重要

    1. Integer a=128;
    2. Integer b=128;
    3. System.out.println(a==b);
    4. Integer x=127;
    5. Integer y = 127;
    6. System.out.println(x==y);

    这里就有一个问题,为什么“==”不可触发,但是第二个输出是true呢?

     -128~127 这段数字在开发中使用的比较多,这个地方有一个整数型常量池,如果没有超过byte的取值范围,就会存储到整数型常量池中,所以在使用-128~127时就不会new对象了,但是128超出了byte取值,所以a,b在使用时会创建对象,在x,y中,保存的内存地址相同所以为true

    三、Integer常用方法

        3.1 手动拆箱(过时)

    1. Integer x = new Integer(1000);
    2. int y = x.intValue();

     

         3.2 静态方法  int parseInt(String)

      int value = Integer.parseInt("123");

       使用情景:

     

          3.3  静态方法 十进制转化为二进制字符串

    1. String s = Integer.toBinaryString(3);
    2. System.out.println(s);

      3.4  静态方法 十进制转化为十六进制字符串

    1. String s = Integer.toHexString(20);
    2. System.out.println(s);

     

    下面这段代码也能看懂了

     

    3.5  静态方法 十进制转化为八进制字符串

    1. String s = Integer.toOctalString(8);
    2. System.out.println(s);

     

    四、 String int Integer 类型互换

     

  • 相关阅读:
    二叉搜索树
    千访丨瓜分小红书流量池?资深操盘手来了!
    禁止EditView自动弹出系统软键盘_Android基础篇(Java)
    MySQL高阶语句----(二)
    我也是醉了,Eureka 延迟注册还有这个坑!
    学习笔记19--汽车模型之汽车运动学
    【从头构筑C#知识体系】1.6 委托
    Nginx+cpolar实现内网穿透多个Windows Web站点端口
    IDEA中SVN 的使用
    树、二叉树、斜树、满二叉树、完全二叉树、二叉排序树、平衡二叉搜索树(AVL树) 、哈夫曼树(Huffman tree)、B树、B+Tree、B*树
  • 原文地址:https://blog.csdn.net/weixin_51351637/article/details/127856682
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号