Java面向对象-常用类 (包装类)

常用类 – 包装类

基本数据类型的包装类

理解:包装类是8种基本数据类型对应的类

出现原因:Java是一种纯面向对象语言,但是java中有8种基本数据类型,破坏了java为纯面向对象的特征。为了承诺在java中一切皆对象,java又给每种基本数据类型分别匹配了一个类,这个类我们称之为包装类/封装类。

注意:每个基本数据类型都有一个与之匹配的包装类。

1.1 八大基本数据类型的包装类

基本数据类型引用数据类型包装类
byteBytejava.lang.Byte
charCharacterjava.lang.Character
shortShortjava.lang.Short
intIntegerjava.lang.Integer
longLongjava.lang.Long
floatFloatjava.lang.Float
doubleDoublejava.lang.Double
booleanBooleanjava.lang.Boolean

注意:int的包装类的写法为Integer、char的包装类的写法是:Character

其余基本数据类型的包装类均是基本类型的首字母大写。

1.2 包装类的层次结构

在这里插入图片描述

1.3 包装类中的常用方法

1、手动装箱:把基本数据类型包装为对应的包装类对象

Integer i1 = new Integer(10); // 利用构造方法

Integer i2 = Integer.valueOf(10); //利用包装类中的静态方法

2、手动拆箱把包装类对象转换为对应的基本数据类型。

int i3= i1.intValue(); //返回包装类对象对应的基本数据
3、自动装箱:可以直接把一个基本数据类型赋值给包装类

例如: Integer i1 = 10; //自动装箱操作

4、 自动拆箱:可以直接把一个包装类对象,赋值给基本类型

例如:int a = new Integer(3); //自动拆箱。

自动装箱和自动拆箱,简化了对包装类的操作。

注意:需要理解自动装箱和拆箱的本质

package com.qf.package_class;public class Test01 {public static void main(String[] args) {//手动装箱:基本数据类型 转 引用数据类型
//		int i = 100;
//		Integer integer = Integer.valueOf(i);
//		System.out.println(integer);//手动拆箱:引用数据类型 转 基本数据类型
//		Integer integer = new Integer(100);
//		int i = integer.intValue();
//		System.out.println(i);//JDK1.5开始提供自动装箱和自动拆箱的特性//自动装箱:基本数据类型 转 引用数据类型
//		int i = 100;
//		Integer integer = i;//底层实现:Integer.valueOf(i);
//		System.out.println(integer);//自动拆箱:引用数据类型 转 基本数据类型
//		Integer integer = new Integer(100);
//		int i = integer;//底层实现:integer.intValue();
//		System.out.println(i);//将字符串转换为intString str = "123";int i = Integer.parseInt(str);System.out.println(i);}
}

拆箱、装箱底层实现

  package com.qf.package_class;public class MyInteger {private int value;public MyInteger(int value) {this.value = value;}public int intValue(){return value;}public static MyInteger valueOf(int i){if(i>=MyIntegerCache.low && i<=MyIntegerCache.higt){return MyIntegerCache.cache[i-MyIntegerCache.low];}return new MyInteger(i);}//MyInteger的缓存类private static class MyIntegerCache{static final int low = -128;static final int higt = 127;static final MyInteger[] cache;static{cache = new MyInteger[higt - low + 1];int j = low;for (int i = 0; i < cache.length; i++) {cache[i] = new MyInteger(j++);}}}
}

1.4 包装类面试题:

  package com.qf.package_class;public class MyInteger {private int value;public MyInteger(int value) {this.value = value;}public int intValue(){return value;}public static MyInteger valueOf(int i){if(i>=MyIntegerCache.low && i<=MyIntegerCache.higt){return MyIntegerCache.cache[i-MyIntegerCache.low];}return new MyInteger(i);}//MyInteger的缓存类private static class MyIntegerCache{static final int low = -128;static final int higt = 127;static final MyInteger[] cache;static{cache = new MyInteger[higt - low + 1];int j = low;for (int i = 0; i < cache.length; i++) {cache[i] = new MyInteger(j++);}}	}
}

cache = new MyInteger[higt - low + 1];

		int j = low;for (int i = 0; i < cache.length; i++) {cache[i] = new MyInteger(j++);}}	
}

}


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

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

相关文章

c/c++ 判断质数(素数)

目录 一.常规方法 二.进阶方法 三.代码示例&#xff08;运用进阶方法&#xff09; 质数是整数且仅能被自身和1整除 一.常规方法 所以我们根据质数的这个定义便可用以下思路判断&#xff1a;设需要检测的数为x。y为除1和自己的除数 逐步检测x是否可被y整除&#xff0c;如x…

MySQL之架构设计与历史(一)

架构设计与历史 概述 和其他数据库系统相比&#xff0c;MySQL有点与众不同&#xff0c;它的架构可以在多种不同场景中应用并发挥好的作用&#xff0c;但同时也会带来一点选择上的困难。MySQL并不完美&#xff0c;却足够灵活&#xff0c;能够适应高要求的环境&#xff0c;例如…

Android 逆向学习【1】——版本/体系结构/代码学习

#Android 历史版本 参考链接&#xff1a;一篇文章让你了解Android各个版本的历程 - 知乎 (zhihu.com) 三个部分&#xff1a;api等级、版本号、代号&#xff08;这三个东西都是指的同一个系统&#xff09; API等级&#xff1a;在APP开发的时候写在清单列表里面的 版本号&…

Vitis HLS 学习笔记--控制驱动TLP - Dataflow视图

目录 1. 简介 2. 功能特性 2.1 Dataflow Viewer 的功能 2.2 Dataflow 和 Pipeline 的区别 3. 具体演示 4. 总结 1. 简介 Dataflow视图&#xff0c;即数据流查看器。 DATAFLOW优化属于一种动态优化过程&#xff0c;其完整性依赖于与RTL协同仿真的完成。因此&#xff0c;…

力扣第206题-反转链表

反转链表的效果示意图 要改变链表结构时&#xff0c;通常加入一个创建的临时头结点会更容易操作 时间复杂度&#xff1a;遍历2遍&#xff0c;2n 空间复杂度&#xff1a;额外创建一个栈&#xff0c;n (空间创建一个数组长度最大为5000&#xff0c;你说这个数组是栈也可以&…

【C++】详解多态

目录 初识多态 多态的条件 接口继承和实现继承 override 和 final 多态原理 继承与虚函数表 析构函数与多态 抽象类 本篇内容关联知识的链接 【C】详解C的继承-CSDN博客 【C】详解C的模板-CSDN博客 【C】C的内存管理-CSDN博客 初识多态 父类被不同子类继承后&#…

报名开启!2024 开源之夏丨Serverless Devs 课题已上线!

Serverless 是近年来云计算领域热门话题&#xff0c;凭借极致弹性、按量付费、降本提效等众多优势受到很多人的追捧&#xff0c;各云厂商也在不断地布局 Serverless 领域。 Serverless Devs 是一个由阿里巴巴发起的 Serverless 领域的开源项目&#xff0c;其目的是要和开发者们…

leetcode以及牛客网单链表相关的题、移除链表元素、链表的中间节点、合并两个有序链表、反转链表、链表分割、倒数第k个节点等的介绍

文章目录 前言一、移除链表元素二、链表的中间节点三、合并两个有序链表四、反转链表五、链表分割六、倒数第k个节点总结 前言 leetcode以及牛客网单链表相关的题、移除链表元素、链表的中间节点、合并两个有序链表、反转链表、链表分割、倒数第k个节点等的介绍 一、移除链表元…

扫盲:如何提升医学图像分割性能-to do list

导读&#xff1a;本文主要讨论了如何改进图像分割项目中的分割性能&#xff0c;包括一般性和具体性的问题解决方案&#xff0c;以及如何通过调整模型参数、改善数据集质量、优化模型架构、调整超参数、增加训练时长、改善图像分辨率和后处理技术等方法来提高分割效果。 图像分…

拼多多暂时超越阿里成为电商第一

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 拼多多的财报又炸裂了&#xff1a; 拼多多发布了第一季度财报&#xff0c;营收868亿&#xff0c;增长了131%&#xff0c;净利润279亿&#xff0c;增长了246%&#xff0c;营销服务收入424亿&#xff0c;也就是商家的…

小林coding笔记

MySQL执行流程 MySQL 的架构共分为两层&#xff1a;Server 层和存储引擎层。Server 层负责建立连接、分析和执行 SQL。存储引擎层负责数据的存储和提取。 Mysql执行 启动Mysql net start mysql登陆 mysql -u root -p输入密码

SwiftUI中的动画.animation和withAnimation

动画是通过改变视图的状态来给视图添加平滑视图变化的能力。SwiftUI中有两种类型的动画:隐式动画和显式动画。 不管是哪种动画&#xff0c;我们都需要一个被State包装的状态属性值&#xff0c;通过这个值的改变来促使与之相关的UI刷新&#xff0c;继而执行动画。 隐式动画.ani…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-19讲 串口实验UART

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

Vivado IP核的快速入门 官方手册和例程

在IP Catalog中选择要使用的IP核&#xff0c;可以查看支持的器件与资料。 在设计源sources页面中选中配置完成的IP核点击右键选择 Open IP Example Design&#xff0c;等待工程加载完成即可&#xff0c;可以点击Run Simulation进行功能仿真进行IP核的学习。 参考&#xff1…

Mac Pro中的开源虚拟机UTM安装ubuntu(Applce M1,M2芯片)(1)

MacPro安装UTM 1 UTM 下载UTM虚拟机链接: https://mac.getutm.app/ 建议官网下载&#xff1a; 下载 Ubuntu Arm 64版 下载 Ubuntu Arm 64版链接: https://cn.ubuntu.com/download/server/arm 2 安装UTM 2.1 安装在mac上 2.2 点Open 2.3 建虚拟机### 2.4 点出虚拟机 2.5 O…

前端性能优化:从系统分析讲到实践策略

前言 在过去几年&#xff0c;我曾经写过几篇和性能优化相关的文章&#xff0c;例如有性能优化方法相关的&#xff0c;有性能监控相关的。但是都只关注于局部&#xff0c;没有从整体上去看待、分析性能优化。所以本文打算尝试从整体上去分析前端性能优化&#xff0c;从性能指标…

使用 RisingWave 和 Redash 处理和可视化实时数据

在创建流处理管道时&#xff0c;需要两个关键组件&#xff1a;一个用于处理和转换数据&#xff0c;一个用于数据可视化。RisingWave 和 Redash 就提供了一个优秀的解决方案。 RisingWave 是一个支持实时数据处理的分布式 SQL 流数据库。它提供增量更新的物化视图&#xff0c;使…

TRICONEX 3720 技术特点

TRICONEX 3720是一款安全管理系统通讯模块&#xff0c;通常用于工业自动化和安全系统中。它的主要作用是在控制系统中处理和管理数据通讯&#xff0c;确保信息在各个组件之间的有效传递。以下是关于TRICONEX 3720的详细介绍&#xff1a; 功能定位&#xff1a;TRICONEX 3720作为…

计算机操作系统总结(1)

1操作系统的概念&#xff08;定义&#xff09;功能和目标 (1)什么是操作系统&#xff1f; &#xff08;2&#xff09;操作系统的功能和目标—作为系统资源的管理者 &#xff08;3&#xff09;操作系统的功能和目标—向上层提供方便易用的服务 &#xff08;4&#xff09;操作系…

IP学习——ospf1

OSPF:开放式最短路径优先协议 无类别IGP协议&#xff1a;链路状态型。基于 LSA收敛&#xff0c;故更新量较大&#xff0c;为在中大型网络正常工作&#xff0c;需要进行结构化的部署---区域划分、ip地址规划 支持等开销负载均衡 组播更新 ---224.0.0.5 224.0.0.6 …