【JAVA学习笔记】48 - 八大常用Wrapper类(包装类)

news2024/11/19 17:44:59

一、包装类

1.针对八种基本定义相应的引用类型一包装类

2.有了类的特点,就可以调用类中的方法。


黄色背景的表示父类是Number

 二、包装类和基本数据的转换

演示包装类和基本数据类型的相互转换,这里以int和Integer演示。

1.jdk5前的手动装箱和拆箱方式,箱: 基本类型-> 包装类型 反之,拆箱

2.jdk5以后(含jdk5)的自动装箱和拆箱方式

3.自动装箱底层调用的是valueOf方法,比如Integer.valueOf(),自动拆箱用的是Value方法,例如intValue();

public class Integer01 {
    public static void main(String[] args) {
        //演示int -- Integer的装箱和拆箱
        //手动装箱
        int n1 = 100;
        Integer integer = new Integer(n1);
        Integer integer1 = Integer.valueOf(n1);
        //手动拆箱
        //Integer -> int
        int i = integer.intValue();

        //jdk5以后就可以自动装箱自动拆箱了
        int n2 = 200;
        //自动装箱
        Integer integer2 = n2;//底层是使用了Interger.valueOf(n2),使用debug能看到走到valueOf;
        int n3 = integer2;//底层仍然是使用了方法integer.intValue()使用debug能看到走到intValue
    }
}

三、包装类的课堂练习

1.

第一段自动装箱

第二段常true执行冒号前的,动态绑定用Integer的toString方法

返回的为传入的值,所以输出1

不是1,三元运算符应该看做一个整体,所以会自动转换提升至最高的Double

所以输出的是1.0 

第三段同理删除线 1

2.

【疑问解决】在自动装箱中Integer赋予一个常量1,为什么会出现==判断true和flase的情况(JDK源码、内部缓冲)-CSDN博客

public class WrapperExercise02 {
    public static void main(String[] args) {
        Integer i = new Integer(1);
        Integer j = new Integer(1);
        System.out.println(i == j);  //False
        //所以,这里主要是看范围 -128 ~ 127 就是直接返回
        /*
        //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;//底层 Integer.valueOf(1);
        System.out.println(m == n); //T
        //所以,这里主要是看范围 -128 ~ 127 就是直接返回
        //,否则,就new Integer(xx);
        Integer x = 128;//底层Integer.valueOf(1);
        Integer y = 128;//底层Integer.valueOf(1);
        System.out.println(x == y);//False

    }
}

  

3.

对于示例6和示例7要记住只要有基本数据类型比较的就是值是否相等

public class WrapperExercise03 {
    public static void main(String[] args) {
        //示例一
        Integer i1 = new Integer(127);
        Integer i2 = new Integer(127);
        System.out.println(i1 == i2);//F
//示例二
        Integer i3 = new Integer(128);
        Integer i4 = new Integer(128);
        System.out.println(i3 == i4);//F

//示例三
        Integer i5 = 127;//底层Integer.valueOf(127)
        Integer i6 = 127;//-128~127
        System.out.println(i5 == i6); //T
//示例四
        Integer i7 = 128;
        Integer i8 = 128;
        System.out.println(i7 == i8);//F
//示例五
        Integer i9 = 127; //Integer.valueOf(127)
        Integer i10 = new Integer(127);
        System.out.println(i9 == i10);//F

        //示例六
        Integer i11=127;
        int i12=127;
//只有有基本数据类型,判断的是
//值是否相同
        System.out.println(i11==i12); //T
//示例七
        Integer i13=128;
        int i14=128;
        System.out.println(i13==i14);//T


    }
}

四、包装类型和String类型的相互转换

以Integer为例,其他类似

public class WrapperVSString {
    public static void main(String[] args) {
        //Integer -> String
        //方法1
        Integer i = 1100;
        String str1 = i + "";
        //方法2
        String str2 = i.toString();
        String str3 = String.valueOf(i);//进入也是调用toString
        //String -> 包装类(Integer)
        //方法1
        String str4 = "12345";
        Integer i2 = Integer.parseInt(str4);//parseInt返回int然后自动装箱
        //方法2
        Integer integer = new Integer(str4);//构造器可以接一个String

    }
}

五、包装类的常用方法

Integer类和Character类的常用方法

System.out.println(Integer.MIN VALUE); //返回最小值

System.out.println(Integer.MAX VALUE);//返回最大值

System.out.printIn(Character.isDigit("a));//判断是不是数字

System.out.printIn(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.printIn(Character.toLowerCase('A))//转成小写
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1141712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32 TIM(四)编码器接口

STM32 TIM&#xff08;四&#xff09;编码器接口 编码器接口简介 Encoder Interface 编码器接口 编码器接口可接收增量&#xff08;正交&#xff09;编码器的信号&#xff0c;根据编码器旋转产生的正交信号脉冲&#xff0c;自动控制CNT自增或自减&#xff0c;从而指示编码器的…

取Dataset子集(pytorch)

取Dataset子集--pytorch 1. why2. how3. example 1. why 我们在调试深度学习代码时&#xff0c;常常会遇到数据集太大&#xff0c;导致调试浪费时间的情况&#xff0c;这种情况下&#xff0c;将数据集中的一个子集拿出来用于调试代码&#xff0c;调试成功在用完整的数据集运行…

elementUI el-table实现鼠标悬浮某一行,在鼠标右侧展示提示信息

背景 el-table组件中&#xff0c;可以通过勾选某条数据来创建单据&#xff0c;但是有些数据没有权限使用&#xff0c;就需要禁用掉勾选的功能&#xff0c;然后当鼠标悬浮在这一行的时候&#xff0c;展示类似于toolTip的提示框。 除了当鼠标悬浮在某一行&#xff0c;展示类似于…

离散数学速成视频推荐(讲的不错)

【拯救者】离散数学速成(期末考研专升本) 适合人群 期末 考研 复试 转升本 月考都可以用 课程大纲 适用课本 适用于所有离散数学课本 按课本章节来&#xff0c; 抽取重点&#xff0c;翻译为人话 学习步骤&#xff1a; 每一章&#xff0c;都会【讲会考的基础&#x1f4bb;】&a…

跨平台Markdown编辑软件Typora mac中文版功能介绍

Typora mac是一款跨平台的Markdown编辑器&#xff0c;支持Windows、MacOS和Linux操作系统。它具有实时预览功能&#xff0c;能够自动将Markdown文本转换为漂亮的排版效果&#xff0c;让用户专注于写作内容而不必关心格式调整。Typora Mac版除了支持常见的Markdown语法外&#x…

通俗易懂的理解 解耦 概念

解耦&#xff08;Decoupling&#xff09;是计算机科学和软件工程中的一个概念&#xff0c;指的是降低系统中不同部分之间的依赖性&#xff0c;使系统的各个组件能够相对独立地进行开发、维护和演化。解耦的主要目标是减少组件之间的紧密耦合&#xff0c;以提高系统的灵活性、可…

Tomcat的动静分离

一、动态负载均衡 3、台虚拟机模拟&#xff1a; 代理服务器&#xff1a;51 tomcat动态页面&#xff1a;53,54 关闭防火墙和安全机制 配置代理服务器&#xff0c;由于做的是七层代理&#xff0c;所以要在http模块配置 配置前端页面 <!DOCTYPE html> <html> <…

AutoEncoding与AutoRegressive:区别,联系和应用

关于AutoEncoding&#xff08;AE&#xff09;和AutoRegressive&#xff08;AR&#xff09; 前几天看了Ilya在Simons上做的关于Generative Model的演讲&#xff0c;介绍了OpenAI现在做的一些AutoRegressive的工作&#xff0c;昨天又看到LeCun宣称Auto-Regressive LLMs are doom…

ES6新特性:变量的解构赋值

文章目录 1 数组的解构赋值1.1 基本用法1.2 交换变量的值1.3 注意事项 2 对象的解构赋值2.1 基本用法2.2 属性重命名2.3 注意事项 ES6允许按照一定模式&#xff0c;从数组和对象中提取值&#xff0c;对变量进行赋值&#xff0c;这被称为解构&#xff08;Destructuring&#xff…

【Flutter】自定义分段选择器Slider

【Flutter】ZFJ自定义分段选择器Slider 前言 在开发一个APP的时候&#xff0c;需要用到一个分段选择器&#xff0c;系统的不满足就自己自定义了一个&#xff1b; 可以自定义节点的数量、自定义节点的大小、自定义滑竿的粗细&#xff0c;自定义气泡的有无等等… 基本上满足你…

Docker实战之二

一、前言 前一篇 Docker实战之一 我们介绍了Dokcer 镜像和容器基本概念&#xff0c;这一节我们来具体制作一个镜像文件并进行快速部署&#xff0c;这个镜像文件是我们的测试环境&#xff0c;主要包含JDK1.8、Nginx、Git、Node、Gradle&#xff0c;基础镜像为CentOS&#xff0c…

进击的零跑:拿巨头的钱,把中国车打进欧洲市场

作者 | 张祥威 编辑 | 德新 造车新势力中&#xff0c;零跑属于不惹事&#xff0c;独自在角落低调发育的这一类。偶尔高调门喊一声要干掉特斯拉&#xff0c;围观的人也是笑一笑不当回事儿&#xff0c;于是又回去默默卖车。 声量一般&#xff0c;卖车还行。 行业里每次晒数据&…

开发实践|三步搞定爆款直播间小游戏

直播间小游戏引爆社交新潮流 近年来&#xff0c;直播行业迅速发展&#xff0c;特别是在抖音平台&#xff0c;直播间的吸引力已远超传统的短视频内容。而在这波直播风潮中&#xff0c;有一种玩法让我格外留意——直播间小游戏。经常刷抖音的朋友应该在直播间看到过这样的场景&a…

SIT3491ISO具有隔离功能,256 节点,全双工 RS422/RS485 芯片

SIT3491ISO 是一款电容隔离的全双工 RS-422/485 收发器&#xff0c;总线端口 ESD 保护能力 HBM 达到 15kV 以上&#xff0c;功能完全满足 EIA-422 以及 TIA/EIA-485 标准要求的 RS-422/485 收发器。 SIT3491ISO 包括一个驱动器和一个接收器&#xff0c;两者均…

为什么 Python 适合初学者?如何开始学习 Python?

与其他编程语言相比较&#xff0c;Python有着更为简单的语法&#xff0c;所以学习Python对于很多刚进入编程领域的初学者来说是一个很好的选择。 Python还是一门应用领域很广的编程语言&#xff0c;这也就意味着你可以在各种各样的工作和领域中使用它。 跟很多刚进入技术领域…

C++in/out输入输出流[IO流]

文章目录 1. C语言的输入与输出2.C的IO流2.1流的概念2.2CIO流2.3刷题常见while(cin >> str)重载强制类型转换运算符模拟while(cin >> str) 2.4C标准IO流2.5C文件IO流1.ifstream 1. C语言的输入与输出 C语言用到最频繁的输入输出方式就是scanf ()与printf()。 scanf…

jquery中定义的动态生成的标签元素,点击事件该方法未定义Uncaught ReferenceError: goHere is not defined

如下图: 在点击动态生成的弹窗里的html中的企业列表标签时(该标签绑定了点击事件-goHere), 会提示:Uncaught ReferenceError: goHere is not defined 生成的html代码: // 自定义content function showContent(a) {if (a != undefined) {return `<div class="…

Centos7 安装和配置 Redis 5 教程

在Centos上安装Redis 5&#xff0c;如果是 Centos8&#xff0c;那么 yum 仓库中默认的 redis 版本就是 5&#xff0c;直接 yum install 即可。但如果是 Centos7&#xff0c;yum 仓库中默认的 redis 版本是 3 系列&#xff0c;比较老&#xff1a; 通过 yum list | grep redis 命…

全民拼购模式:无论成败皆有所得

什么是全民拼购模式&#xff1f; 全民拼购模式是一种基于社交电商的新型模式&#xff0c;它通过拼团、拼购等方式&#xff0c;让消费者享受更优惠的价格和更便捷的购物体验。这种模式的出现&#xff0c;不仅为电商平台注入了新的活力&#xff0c;也成为了消费者追求高性价比商…

物联网AI MicroPython传感器学习 之 LCD1602液晶屏

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 LCD1602 字符型液晶显示模块是专门用于显示字母、数字、符号等的点阵型液晶显示模块。分4位和8位数据传输方式。提供5x7点阵游标的显示模式。提供显示数据缓冲区 DDRAM、字符发生器CGROM和字符…