常用类(一)----包装类的使用和分析

news2024/10/11 18:51:17

文章目录

  • 1.包装类
  • 2.课堂测试题
  • 3.包装类方法
  • 4.Integer创建机制
  • 5.Integer面试题

1.包装类

概念:基本数据类型对应的类就是包装类,就是为了把基本数据类型转换为包装类,使用这个类里面的方法操作数据----装箱的过程;

//装箱:基本数据类型->包装类
//拆箱:包装类->基本数据类型

int n1 = 100;
//手动装箱
Integer integer = new Integer(n1);
Integer integer1 = Integer.valueOf(n1);

//手动拆箱
int i = Integer.intValue();

//到了jdk5之后,可以实现自动装箱和拆箱
int n2 = 200;
Integer integer2 = n2;//这个底层还是使用的这个Integer.valueOf方法,return的是new Integer
                      //底层还是手动装箱的过程,只不过这个IDEA底层帮我们完了

//自动拆箱
int n3 = integer2;//底层还是进入intValue方法

由此可见,

手动装箱的过程中,需要new基本数据类型,或者是调用这个valueOf方法也是可以的;

手动拆箱就是使用这个intValue方法,把基本数据类型转换为int类型数据;

自动装箱可以把这个整形数据直接赋值给基本数据类型,底层还是使用的valueOf方法,返回包装类的对象;

自动拆箱也是调用这个intValue方法,但是写代码的时候直接把包装类赋值给int类型数据;

2.课堂测试题

下面的代码是否正确:

Double d = 100d;//ok,自动装箱,调用valueOf(100d)
Float f = 1.5f;//ok,自动装箱,调用valueOf(1.5f)

上面的这个代码里面,我们的Double,Float这样的第一个字母大写表示的就是保证类,这个第一个字母大小写也是区分包装类和基本数据类型的一个依据;

上面的两个都是进行装箱过程,自动装箱,因此是可以的;


下面的两个题目的输出结果:

Object obj = true? new Integer(1):new Double(2.0); 
system.out.println(obj);
Object obj2;
if(true)
	obj2 = new Integer(1)
else
	obj2 = new Double(2.0)
system.out.println(obj2);

上面的第一个三目运算符是一个整体,因此这个输出的就是我们的1.0,这个主要是因为这个double的精度更高,因此这个int会转换为double类型的数据,所以这个打印结果是1。0,而不是1;

下面的这个判断语句,就不是一个整体,不会因为这个double类型数据的存在,影响我们的整形数据,因此这个打印输出结果是1;

3.包装类方法

Integer类<—>String类型:相互转化

Integer i = 100;

String str1 = i+"";

String str2 = i.toString();

String str3 = String.valueOf(i);

字符串转换为Integer包装类:

String str4 = "12345";

Integer i2 = Integer.parseInt(str4);

Integer i3 = new Integer(str4);

其他的数据类型和包装类之间也是可以转化,方法很多,我们用到的时候查阅即可;

4.Integer创建机制

下面的这个案例是一个Integer创建机制的说明:

public class Main {
    public static void main(String[] args) {
        Integer i = new Integer(1);
        Integer j = new Integer(1);
        System.out.println(i==j);

        Integer m=1;//调用Integer.valueOf(1);
        Integer n=1;//调用Integer.valueOf(1);
        System.out.println(m==n);

        Integer x=128;
        Integer y=128;
        System.out.println(m==n);
    }

在上面的这个里面:

第一个判断相等:我们是new两个对象,这个i,j都是对象,这个地址不可能是一样的,因此不会相等;

第二个判断:我们调用的这个valueOf实现自动装箱的过程,下面的这个图片里面就是我们的valueOf源代码,范围是-128到127时候,就会直接在数组返回,不在这个范围就会new对象,这个时候地址就不会相同了;

第三个判断:这个128不在我们的这个范围里面,因此会new对象,因此这个第三个的输出结果不会一样;

这个low就是-128,这个源码里面的high就是127,cache是数组,在这个范围里面返回的就是数组里面的元素

image-20241011171537253

5.Integer面试题

下面的这个案例需要我们区分一下,相关的注意事项我添加到了注释里面去:

public class test1 {
    public static void main(String[] args) {
//示例一
        Integer i1 = new Integer(127);
        Integer i2 = new Integer(127);
        System.out.println(i1 == i2);//F---new出来的对象肯定是不一样的~
        
        
//示例二
        Integer i3 = new Integer(128);
        Integer i4 = new Integer(128);
        System.out.println(i3 == i4);//F---new出来的对象肯定是不一样的~
        
        
//示例三
        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---
        
        //i9是在这个范围里面,返回的是我们的数组里面的数据,但是											//这个,i10就是new出来的,因此两个对象的这个地址肯定是不一样的;
        
        
//示例六
        Integer i11 = 127;
        int i12 = 127;
		//只要有基本数据类型, 判断的是值是否相同
        System.out.println(i11 == i12); //T----有基本数据类型i12,因此这个就是一样的
        
        
//示例七
        Integer i13 = 128;
        int i14 = 128;
        //只要有基本数据类型, 判断的是值是否相同
        System.out.println(i13 == i14);//T--
        //有一个i14是基本数据类型,因此这个时候只要两个的数值一样即可;
    }
}

    Integer i13 = 128;
    int i14 = 128;
    //只要有基本数据类型, 判断的是值是否相同
    System.out.println(i13 == i14);//T--
    //有一个i14是基本数据类型,因此这个时候只要两个的数值一样即可;
}

}

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

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

相关文章

算子级血缘在数据全链路变更感知、影响分析场景下的应用

我们都知道&#xff0c;数据的完整性、可用性和准确性对企业决策至关重要。数据采集、存储、加工到消费的任何一个环节失误都可能对最终的数据质量产生负面影响。而今&#xff0c;数据量激增、数据资产多样化及数据加工链路复杂化&#xff0c;数据全链路变更感知监控和影响面精…

Magnum IO

NVIDIA Magnum IO 文章目录 前言加速数据中心 IO 性能,随时随地助力 AINVIDIA Magnum IO 优化堆栈1. 存储 IO2. 网络 IO3. 网内计算4. IO 管理跨数据中心应用加速 IO1. 数据分析Magnum IO 库和数据分析工具2. 高性能计算Magnum IO 库和 HPC 应用3. 深度学习Magnum IO 库和深度…

AndroidStudio配置MQTT连接云平台EMQX

引言 本篇博客主要介绍mqtt和emqx配置连接实现数据收发&#xff0c;我会从基础的本机连接到手机和本机连接再到手机实现mqtt连接云平台&#xff0c;大家可以根据需要自行选择观看&#xff08;后面两个教程都建立在mqtt和emqx下载完成的基础上&#xff0c;若没有下载完成&#x…

一文介绍SQL标准1986~2023的演变

SQL标准1986年制定第一版&#xff0c;到最新的2023版&#xff0c;已经有38年的历史&#xff0c;现在依然是计算机非常活跃的语言&#xff0c;50%的程序员都能掌握SQL&#xff0c;数据分析师也是SQL的主要使用人员之一。 从早期的基本语法&#xff0c;到融合了XML、JSON等复杂数…

vue-组件通信

组件通信是什么 组件通信就是组件与组件之间的数据传递 组件的数据是独立的&#xff0c;无法直接访问其他组件的数据 组件关系 组件关系的两大类&#xff1a; 组件A和B是非父子关系&#xff0c;组件C对于A和B是父子关系 父子通信 父组件通过props将数据传递给子组件 子组件利…

sed awk 第二版学习(六)—— 编写 awk 脚本

目录 一、awk 程序设计模型 二、模式匹配 三、记录和字段 1. 字段的引用和分离 2. 字段的划分 四、表达式 五、系统变量 1. FS、OFS、RS、ORS 2. NF 3. NR、FILENAME、FNR 4. CONVFMT、OFMT 5. 两个例子 &#xff08;1&#xff09;处理多行记录 &#xff08;2&am…

Alas配置更新器自动更新

之前我的部署方法有些问题&#xff0c;不应该下载源码再上传到服务器&#xff0c;这样会导致无法使用更新器&#xff0c;只能手动更新&#xff0c;比较麻烦&#xff0c;最近改用git方式获取源码&#xff0c;解决了无法使用更新器的问题&#xff0c;亲测有效 以下操作均基于雨云…

探索未知,惊喜连连 —— 盲盒小程序开发文案

在这个充满惊喜与好奇的时代&#xff0c;盲盒已经成为了一种独特的文化现象&#xff0c;它不仅仅是一种商品&#xff0c;更是一种心灵的慰藉和乐趣的源泉。为了满足广大盲盒爱好者的需求&#xff0c;我们精心打造了一款盲盒小程序&#xff0c;让惊喜触手可及&#xff0c;随时随…

数据库——创立表和库

数据库&#xff08;Database&#xff09;是一个用于存储、管理和检索数据的系统。它可以组织结构化数据&#xff0c;支持高效的存取和操作。数据库通常由一个数据库管理系统&#xff08;DBMS&#xff09;来支持&#xff0c;常见的DBMS包括&#xff1a; 关系数据库&#xff08;R…

如何正确的用引用作返回值?

错误一&#xff1a;引用作函数返回值&#xff0c;但函数中没用static修饰 下面代码输出什么结果&#xff1f; 输出结果&#xff1a; Q&#xff1a;ret应该是3&#xff0c;为什么再调用一次Add函数后&#xff0c;ret变成了7&#xff1f; 解释&#xff1a; ①&#xff1a;在第二…

steam上传游戏问题汇总

问题 首先是Library Logo 必须是png图片&#xff0c;还必须带上游戏名字你的宣传图不能使用游戏内部的截图。Library_Hero必须是空白的&#xff0c;不能有任何文字。他是和Library_logo合并在一起的。这个法律其实没必要填写。然后我错误的把EULA填写在这里了也报错了 如果你在…

《Linux从小白到高手》综合应用篇:详解Linux系统调优之服务器硬件优化

List item 本篇介绍Linux服务器硬件调优。硬件调优主要包括CPU、内存、磁盘、网络等关键硬件组。 1. CPU优化 选择适合的CPU&#xff1a; –根据应用需求选择多核、高频的CPU&#xff0c;以满足高并发和计算密集型任务的需求。CPU缓存优化&#xff1a; –确保CPU缓存&#x…

电容补偿功率因数不标准会怎样

电容补偿功率因数如果不符合标准&#xff0c;可能会对电力系统和设备运行造成多种负面影响。以下是功率因数补偿不当可能引发的问题&#xff1a; 1、欠补偿或不足补偿的影响 功率因数偏低&#xff1a;如果补偿量不足&#xff0c;功率因数未达到预期值&#xff08;通常在0.9至…

【C++】C++入门基础

一. 第一个C程序 #include<iostream> using namespace std;int main() {cout << "hello world" << endl;return 0; } 二.命名空间 1.namespace的价值 在C/C中&#xff0c;变量、函数和后⾯要学到的类都是⼤量存在的&#xff0c;这些变量、函数…

数据结构修炼——栈和队列是什么?如何实现?从入门到实战

目录 一、栈1 栈的概念及结构2 栈的实现 二、队列1 队列的概念及结构2 队列的实现 三、栈和队列OJ题1 有效的括号2 用队列实现栈3 用栈实现队列4 循环队列 四、概念选择题 一、栈 1 栈的概念及结构 栈&#xff1a;一种特殊的线性表。栈只允许在固定端进行插入和删除操作。进行…

专业的客服话术快捷回复软件

在当今快节奏的工作环境中&#xff0c;客服行业面临着前所未有的挑战。尤其是对于刚入行的新手小白来说&#xff0c;如何快速提升响应速度、保证回复质量&#xff0c;成为了他们亟待解决的问题。而今天&#xff0c;我要向大家推荐的这款“客服宝”快捷回复软件&#xff0c;就非…

advanced skeleton绑定模型无法返回修改按钮

有时候出现问题 adv插件没有Toggle Fit返回修改部分的按钮&#xff0c;这个通常是命名造成的 解决方式&#xff0c;把骨骼模型最上层的组名重改为Group&#xff0c;然后重开插件就行了 参考https://www.reddit.com/r/Maya/comments/xcgvcq/does_anyone_know_why_advanced_ske…

美畅物联丨破解养老难题:视频汇聚平台助力银发经济蓬勃发展

​一、引言 今天是重阳佳节&#xff0c;我们就来聊一聊视频汇聚平台在智慧养老中的应用与前景。 近年来&#xff0c;中国老龄化态势愈发严峻&#xff0c;已成为社会各界高度关注的重大课题。随着时间的推移&#xff0c;老年人口数量呈现出大规模增长的趋势&#xff0c;且独居老…

HE染色:揭示细胞细节,助力病理诊断|文献速递·24-10-11

好文分享 这篇文章是一篇关于苏木精-伊红&#xff08;H&E&#xff09;染色在诊断外科病理学中重要性的综述。 角色姓名单位第一作者John K. C. Chan香港特别行政区中国女王伊丽莎白医院 文章首先强调了尽管分子医学取得了显著进展&#xff0c;但显微镜仍然是外科病理学家日…

初阶数据结构(2):空间复杂度和复杂度算法题

Hello~,欢迎大家来到我的博客进行学习&#xff01; 目录 1.空间复杂度2. 常见复杂度对比3. 复杂度算法题3.1 旋转数组解法一解法二解法三 1.空间复杂度 根据摩尔定律&#xff0c;每隔一段时间晶体管的数量会增加一倍&#xff0c;即内存会增加&#xff0c;价格会降低。内存就不…