包装类-Wrapper

news2024/9/22 11:35:34

包装类的分类

  1. 针对八种基本数据类型相应的引用类型-包装类
  2. 有了类的特点,就可以调用对应的类中的方法
    在这里插入图片描述
    在这里插入图片描述

装箱和拆箱

Java是一种面向对象的编程语言,学习Java时就被明确灌输了一个概念:OOP,即面向对象编程。一切皆对象。但是基本类型是不具备Java中对象的某些特征,对象内部可以封装一系列属性和行为,但是这些在基本数据类型中都无法满足,所以对应的包装类型就应运而生了。也就是说单独的一个 int a = 100;那么这个a它只能是代表一个值,并无法把它当作一个对象来操作。
装箱就是把 值类型变成引用类型的一个过程,拆箱就是把一个引用类型重新变成值类型的过程。只有装过箱的才能拆箱

jdk5以前是需要手动装箱拆箱的:

演示:手动装拆箱

public class test1 {
    public static void main(String []args){
        int a = 100;
        //手动装箱
        Integer integer = new Integer(a);//第一种
        Integer integer1 = Integer.valueOf(a);//第二种
        System.out.println(integer);//输出100
        System.out.println(integer1);//输出100
        //手动拆箱
        int b = integer.intValue();
        System.out.println(b);//输出100
    }
}

运行结果:
100
100
100
由运行结果可以看出,所谓装箱拆箱,就是把一个基本类型变成引用类型的,然后又从引用类型变成基本类型的一种方式。
之所以要这样玩,是为了可以使用引用类型的方法等等…,但所保存的值是不会变化的

jdk5以后就是自动装拆箱了
演示:

public class test1 {
    public static void main(String []args){
        int a = 100;
        //自动装箱
        Integer integer = a;//其实底层还是使用Integer的方法实现的只不过省略了
        System.out.println(a);
        //自动拆箱
        int b = integer;
        System.out.println(b);//同理也是使用的方法,但是省略了
    }
}

运行结果:
100
100

其他的包装类也是类似的

包装类小测试

  1. 下面代码正确吗
Double d = 100d;
Float f = 1.5f;

正确,对包装类的自动装箱 等同于调用包装类的valueOf();方法

  1. 下面代码输出结果是什么
Object obj = true? new Integer(1) : new Double(2.0);
System.out.println(obj);

三元运算符,当为真是走第一个 为假时走第二个 所以走new Integer(1),而又因为当两种数据类型在进行比较时,会自动转换成比较大的类型,所以 1 会变成1.0,输出结果1.0

  1. 下面代码输出结果是什么
Object obj2;
if(true){
obj2 = new Ineger(1);
}else{
obj2 = new Double(2.0);}
System.out.pritln(obj2)

布尔值为真,走obj2 = new Ineger(1);这里是向上转型,所以输出 1

基本数据的包装类型与String类型的相互转换

把Intger类型转成String类型

public class test1 {
    public static void main(String []args){
        Integer n1 = 12345;
        String s1 = n1.toString();// 第一种使用toString方法
        System.out.println(s1);
        String s2 =String.valueOf(n1);//第二种 使用valueOf方法
        System.out.println(s2);
        String s3 = n1+" ";
        System.out.println(s3);//第三种使用+" "
    }
}

String 类型转成 Intger

public class test1 {
    public static void main(String []args){
        String s1 = "234";
        Integer i = new Integer(s1);//第一种使用默认自动装箱
        System.out.println(i);
        Integer i2 = Integer.valueOf(s1);//第二种 使用valueOf方法
        System.out.println(i2);
    }
}

Intger和Character的常用方法

在这里插入图片描述

Intger常见面试题

1.看以下代码输出什么

		Integer i = new Integer(1);
        Integer j = new Integer(1);
        System.out.println(i == j);
        Integer m = 1;
        Integer n = 1;
        System.out.println(m == n);
        Integer x = 128;
        Integer y = 128;
        System.out.println(x == y);

首先看第一个 ,由于 i和j都是new出来的对象,所以==用在比较对象时比较的是地址,所以是第一个输出false
第二个是自动装箱等同于调用valueOf(int x)方法,在这个方法的源码中如果传递进来的值>= -128 且 <= 127时就直接返回值
如果超出这个范围就new一个Intger对象保存
。而1在这个范围之内,所以不会返回对象,因为输出true
第三个,同理还是会调用valueOf(int x)方法,但由于128超出了valueOf(int x)里规定的范围所以会返回创建对象,因为又是对比地址,所以返回false,

2.下列代码会输出什么

Intger a = 127;
int b = 127;
System.out.println(a == b);
Intger c = 128;
int d = 128;
System.out.println(c == d);

在 == 的对比中,如果是基本类型和和基本类型的包装类进行对比,那么就是值对比
所以两个都是true;


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

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

相关文章

[附源码]JAVA毕业设计框架的电脑测评系统(系统+LW)

[附源码]JAVA毕业设计框架的电脑测评系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

Win11右键菜单反应慢有延迟解决方法分享

Win11右键菜单反应慢有延迟解决方法分享。有用户发现电脑鼠标点击右键菜单的时候&#xff0c;会出现一些延迟&#xff0c;导致自己在使用的过程中非常难受。那么这个问题如何自己去进行解决呢&#xff1f;我们一起来看看详细的解决方法分享吧。 解决方法&#xff1a; 注意&…

物联网IoT体系结构及核心技术

物联网&#xff0c;英文名为Internet of things&#xff08;IoT&#xff09;&#xff0c;顾名思义&#xff0c;物联网就是物物相连的互联网。 这有两层意思&#xff1a; 1、物联网的核心和基础仍然是互联网&#xff0c;是在互联网基础上的延伸和扩展的网络&#xff1b; 2、从…

超级详细 的 Redis 安装教程

超级详细 的 Redis 安装教程 Windows 版本的 Redis 是 Microsoft 的开源部门提供的 Redis. 这个版本的 Redis 适合开发人员学习使用&#xff0c;生产环境中使用 Linux 系统上的 Redis, 这里讲解了这两种的安装和下载。按照你们需要的liunx 或window步骤来 就可以了&#xff08;…

智能优化算法:法医调查优化算法 - 附代码

智能优化算法&#xff1a;法医调查优化算法 摘要&#xff1a;法医调查优化算法( Forensic-based investigation algorithm, FBI), 是由 Jui-Sheng Chou 等于2020 年提出的一种群体智能优化算法。其灵感来源于警官调查嫌疑人的过程。 1.法医调查优化算法 警察的大规模案件调查…

Java并发编程—线程详解

文章目录线程简介什么是线程多线程的使用什么时候需要使用多线程&#xff1f;写多少个线程比较合适&#xff1f;线程优先级靠谱的让出CPU的方法&#xff1f;线程的状态线程的状态有哪几种&#xff1f;线程的状态转换Daemon线程启动和终止线程构造线程启动线程理解中断如何安全的…

[附源码]计算机毕业设计基于Springboot的物品交换平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

逻辑回归模型和Python代码实现

文章目录逻辑回归原理sigmoid函数优化建模代码实现自编代码sklearn代码代码测试原理测试交叉验证逻辑回归原理 此前介绍的线性回归基本模型和增加了正则项的优化模型都只能用来预测连续值&#xff08;标签值是多少&#xff09;&#xff0c;如果想要应用于分类问题&#xff08;…

回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出

回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出 文章目录 回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出预测效果基本介绍模型结构程序设计参考资料致谢预测效果 基本介绍 GRU神经网络是LSTM神经网络的一种变体,LSTM 神经网 络是在RNN的基础上发展起来的。RNN是一…

Python学习----网络编程

网络&#xff1a;网络就是实现资源共享和信息传递的虚拟平台&#xff0c;我们可以编写基于网络通信的程序。比如socket编程&#xff0c;web开发 Socket编程 Socket是程序之间通信的一个工具&#xff0c;好比显示生活中的电话&#xff0c;你知道了对方的电话号码之后&#xff…

RabbitMQ进阶

可以结合着狂神的RabbitMQ的笔记来进行学习 狂神说RabbitMQ笔记 RabbitMQ高级特性 消息可靠性投递 保证我发出的消息可以到达中间件&#xff0c;避免在传输的过程中发生丢失的情况。 这两个可靠性传输方式分别是负责不同的阶段&#xff0c;confirm是负责保证从生产者到队列…

[附源码]Python计算机毕业设计Django抗疫医疗用品销售平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

2023年江苏省职业院校技能大赛中职赛项规程样题

2023年江苏省职业院校技能大赛中职赛项规程 一、赛项名称 赛项编号&#xff1a;JSZ202335 赛项名称&#xff1a;网络安全 赛项组别&#xff1a;学生组、教师组 赛项归属专业大类&#xff1a;信息技术类 竞赛目的 贯彻落实《国家职业教育改革实施方案》《关于推动现代职业教…

设计模式——观察者模式

动机&#xff08;Motivation&#xff09; 在软件构建过程中&#xff0c;我们需要为某些对象建立一种“通知依赖关系” ——一个对象&#xff08;目标对象&#xff09;的状态发生改变&#xff0c;所有的依赖对象&#xff08;观察者对象&#xff09;都将得到通知。如果这样的依赖…

非零基础自学Golang 2 开发环境 2.1 Go 的安装

非零基础自学Golang 学习文档地址&#xff1a;https://www.topgoer.cn/ 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删【已联系过文档作者】 文章目录非零基础自学Golang2 开发环境2.1 Go 的安装2.1.1 下载地址2.1.2 Go 的安装2.1.3 安装检查2 开发环境…

TypeScript22(Rollup构建TS项目 webpack构建TS项目)

Rollup构建TS项目 安装依赖&#xff1a; 1.全局安装rollup&#xff1a; npm install rollup-g 2.安装TypeScript&#xff1a; npm install typescript -D 3.安装TypeScript 转换器&#xff1a; npm install rollup-plugin-typescript2 -D 4.安装代码压缩插件&#xff1a…

项目:金融行业反欺诈模型

当今以互联网、移动终端等为代表的技术力量正深刻地影响着金融支付市场&#xff0c;信息化、网络化、无线终端等技术的应用&#xff0c;使金融机构特别是银行业的经营发生了天翻地覆的变化&#xff0c;传统的银行柜台和网点业务&#xff0c;正渐渐被电子化交易所替代&#xff0…

[附源码]计算机毕业设计基于SpringBoot的黄河文化科普网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Golang开发变量声明命名惯例

《Go语言精进之路》第二、三章部分内容学习记录笔记。 1.基本原则 Golang开发中&#xff0c;可遵守简单且一致的命名原则&#xff0c;力求命名精简、易懂和一致。 package声明 Golang的package声明以小写形式的单个词进行命名&#xff1a; shopservice、utils、logs、tcc、l…

08_openstack之nova节点扩容

目录 一、环境准备 二、扩容节点配置 三、部署扩容节点 1、编辑answer.ini文件 2、执行安装 一、环境准备 部署openstack私有云环境&#xff1a;02_openstack私有云部署_桂安俊kylinOS的博客-CSDN博客 上述环境只部署了nova1节点&#xff0c;现将未部署的nova2节点作为扩…