Java 包装类
Java 中有些类只能操作对象,因此 Java 的基本数据类型都有一个对应的包装类。
- byte:Byte
- short:Short
- int:Integer
- long:Long
- float:Float
- double:Double
- char:Character
- boolean:Boolean
- void:Void
包装类与基本数据类型转换
包装类与基本数据类型的转换代码结构是类似的。
将基本类型转换为包装类的过程,一般称为“装箱”,而将包装类型转换为基本类型的过程,则称为“拆箱”。
装箱拆箱的写法比较繁琐,Java 5 以后引入了自动装箱和拆箱技术,可以直接将基本类型赋值给引用类型,反之亦可。
自动装箱/拆箱是 Java 编译器提供的能力,编译后会替换为调用对应的 valueOf / xxxValue 方法。
基本数据类型转包装类
- ❑ valueOf (推荐)
Integer a = Integer.valueOf(1);
- ❑ 构造方法
Integer b = new Integer(1);
包装类转基本数据类型 xxxValue
int c = b.intValue(); // 注意 b 不能为 null
包装类与字符串转换
字符串转基本数据类型 / 包装类
- ❑ parseXXX 字符串转基本数据类型
double pai = Double.parseDouble("3.14");
- ❑ valueOf 字符串转包装类
Double pai = Double.valueOf("3.14");
包装类转字符串
- ❑ + 连接符
Double pai = Double.valueOf("3.14");
String str = pai + "";
- ❑ toString
Double pai = Double.valueOf("3.14");
String str = pai.toString();
对于整数类型,字符串表示除了默认的十进制外,还可以表示为其他进制,如二进制、八进制和十六进制,包装类有静态方法进行相互转换。
❑ toBinaryString 转二进制
❑ toOctalString 转八进制
❑ toHexString 转十六进
包装类共性
equals
所有包装类都重写了该实现,实际比较用的是其包装的基本类型值。
public boolean equals(Object obj) {if (obj instanceof Integer) {return value == ((Integer)obj).intValue();}return false;
}
public boolean equals(Object obj) {return (obj instanceof Float) && (floatToIntBits(((Float)obj).value) == floatToIntBits(value));
}
floatToIntBits() 会将 float 的二进制表示视为 int,只有两个 float 的二进制表示完全一样的时候,equals 才会返回 true。
hashCode
hashCode 和 equals 方法联系密切,如果 equals 方法返回 true,则 hashCode 也必须一样,反之不要求。
- Byte、Short、Integer、Character
public int hashCode() {return (int)value;
}
- Long
public int hashCode() {return (int)(value ^ (value >>> 32));
}
Long 是高 32 位与低 32 位进行位异或操作。
- Boolean
public int hashCode() {return value ? 1231 : 1237;
}
根据值返回两个质数,质数用于哈希时比较好,不容易冲突。
- Float
public int hashCode() {return floatToIntBits(value);
}
- Double
public int hashCode() {long bits = doubleToLongBits(value);return(int)(bits ^ (bits >>> 32));
}
实现了 Comparable 接口
数值父类 Number
byte byteValue()
short shortValue()
int intValue()
long longValue()
float floatValue()
double doubleValue()
通过这些方法,包装类实例可以返回任意的基本数值类型。
不可变性
包装类都是不可变类。
- 所有包装类都声明为了 final,不能被继承。
- 内部基本类型值是私有的,且声明为了 final。
- 没有定义 setter 方法。
参考:《Java 编程的逻辑》马俊昌
相关文章:
Java 包装类
Java 中有些类只能操作对象,因此 Java 的基本数据类型都有一个对应的包装类。 byte:Byteshort:Shortint:Integerlong:Longfloat:Floatdouble:Doublechar:Characterbooleanÿ…...
Raspberry Pi GPIO入门指南
如果您想使用 Raspberry Pi 进行数字输入/输出操作,那么您需要使用 GPIO(通用输入/输出)引脚。在这篇文章中,我们将为您提供 Raspberry Pi GPIO 的基础知识,包括如何访问和操作 GPIO 引脚。 0.认识GPIO 树莓派上的那…...
汇编语言程序设计(三)之汇编程序
系列文章 汇编语言程序设计(一) 汇编语言程序设计(二)之寄存器 汇编程序 经过上述课程的学习,我们可以编写一个完整的程序了。这章开始我们将开始编写完整的汇编语言程序,用编译和连接程序将它们连接成可…...
用二极管和电容过滤电源波动,实现简单的稳压 - 小水泵升压改装方案
简而言之,就是类似采样保持电路,当电源电压因为电机启动而骤降时,用二极管避免电容电压跟着降低,从而让电容上连接的低功耗芯片有一个比较稳定的供电电压。没什么特别的用处,省个LDO 吧,电压跌幅太大的时候…...
【数据结构与算法】数据结构有哪些?算法有哪些?
1. 算法与数据结构总览图 2.常用的数据结构 2.1.数组(Array) 数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。数组可以说是最基本的数据结构,在各种编程语言中都有对应。一个数组可以分解为多个数…...
使用Element-UI展示数据(动态查询)
学习内容来源:视频P4 本篇文章进度接着之前的文章进行续写 精简前后端分离项目搭建 Vue基础容器使用 目录选择组件修改表格组件修改分页组件增加后端接口前端请求数据接口页面初始化请求数据点击页码请求数据选择组件 在官方文档中选择现成的组件,放在页…...
lamda 表达式例子全集
1、List 转 map 1.1、key(Model属性) value Model Map<String, Model> modeMap List.stream().collect(Collectors.toMap(Model1::属性get方法, v -> v, (p1, p2) -> p1)); 1.2、key(Model1属性) value Model2 Map<String, Model1> model2Map List.stream…...
计算机网络第八版——第一章课后题答案(超详细)
第一章 该答案为博主在网络上整理,排版不易,希望大家多多点赞支持。后续将会持续更新(可以给博主点个关注~ 【1-01】计算机网络可以向用户提供哪些服务? 解答:这道题没有现成的标准答案,因为可以从不同的…...
嵌入式和Python(二):python初识及其基本使用规则
目录 一,python基本特点 二,python使用说明 ● 两种编程方式 ① 交互式编程 ② 脚本式编程 ● python中文编码 ● python行和缩进 ● python引号 ● python空行 ● python等待用户输入 ① 没有转换变量类型 ② 转换变量类型 ● python变…...
C语言详解双向链表的基本操作
目录 双链表的定义与接口函数 定义双链表 接口函数 详解接口函数的实现 创建新节点(BuyLTNode) 初始化双链表(ListInit) 双向链表打印(ListPrint) 双链表查找(ListFind) 双链…...
面试必须要知道的常见排序算法
以下排序均为升序 1.直接插入排序 具体思想 把待排序的数据按大小比较插入到一个已经排序好的有序序列中,直到所有的待排序数据全部插入到有序序列中为止.实际生活中,我们平常斗地主摸牌时,就用到了插入排序的思想. 当插入第n个数据时,前面n-1个数据已经有序;第n个数据依次与前…...
Kubernetes之服务发布
学了服务发现后,svc的IP只能被集群内部主机及pod才可以访问,要想集群外的主机也可以访问svc,就需要利用到服务发布。 NodePort Nodeport服务是外部访问服务的最基本方式。当我们创建一个服务的时候,把服务的端口映射到kubernete…...
【第二章】谭浩强C语言课后习题答案
1. 什么是算法?试从日常生活中找3个例子,描述它们的算法 算法:简而言之就是求解问题的步骤,对特定问题求解步骤的一种描述。 比如生活中的例子: 考大学首先填报志愿表、交报名费、拿到准考证、按时参加考试、收到录取通知书、按照日期到指定学校报到。 去北京听演唱会首先…...
PostgreSQL和PostGISWGS84和CGCS2000与GCJ02和BD09坐标系与之间互转
– 如果转换后结果为null,查看geom的srid是否为4326或者4490 WGS84转GCJ02 select geoc_wgs84togcj02(geom) from test_table GCJ02转WGS84 select geoc_gcj02towgs84(geom) from test_table WGS84转BD09 select geoc_wgs84tobd09(geom) from test_table BD09转WGS84 select …...
数据结构——链表讲解(2)
作者:几冬雪来 时间:2023年3月5日 内容:数据结构链表讲解 目录 前言: 剩余的链表应用: 1.查找: 2.改写数据: 3.在pos之前插入数据: 4.pos位置删除: 5.在pos的后…...
Elasticsearch:图片相似度搜索的 5 个技术组成部分
作者:Radovan Ondas,Bernhard Suhm 在本系列博文的第一部分中,我们介绍了图像相似度搜索,并回顾了一种可以降低复杂性并便于实施的高级架构。 此博客解释了实现图像相似性搜索应用程序所需的每个组件的基本概念和技术注意事项。 学…...
【CVPR2022】Class Re-Activation Maps for Weakly-Supervised Semantic Segmentation
论文标题:Class Re-Activation Maps for Weakly-Supervised Semantic Segmentation收录:CVPR 2022paper: https://arxiv.org/abs/2203.00962code: https://github.com/zhaozhengChen/ReCAM解读:https://zhuanlan.zhihu.com/p/478133151https:…...
PMP项目管理项目运行环境
目录1 概述2 事业环境因素和组织过程资产3 组织系统3.1 概述3.2 组织治理框架3.2.1 治理框架3.2.2 项目治理3.3 管理要素3.4 组织结构类型3.4.1 组织结构类型3.4.2 项目管理办公室1 概述 项目所处的环境可能对项目的开展产生有利或不利的影响,这些影响的两大主要来…...
Vue 3.0 渲染函数 【Vue3 从零开始】
Vue 推荐在绝大多数情况下使用模板来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript 的完全编程的能力。这时你可以用渲染函数,它比模板更接近编译器。 让我们深入一个简单的例子,这个例子里 render 函数很实用。假设我们要生成一些…...
西电软件体系结构核心考点汇总(期末真题+核心考点)
文章目录前言一、历年真题二、核心考点汇总2.1 什么是软件体系架构?(软件体系结构的定义)2.2 架构风格优缺点2.3 质量属性2.4 质量评估前言 主要针对西安电子科技大学《软件体系结构》的核心考点进行汇总。 【期末期间总结资料如下】 针对西电计科院软件工程专业大三《软件体…...
用 C# 写一个完整的 ReAct 智能体:从命令行输入到任务完成的全链路拆解
一、中间件是啥?咱用“餐厅”打个比方 想象一下,你的FastAPI应用是个高级餐厅。 ?? 顾客(客户端请求)来到门口。- 迎宾(CORS中间件):先看你是不是从允许的街区(域名)来…...
别只比功能了!从社区生态和未来路线图,聊聊Spring AI和LangChain4j谁更值得押注
从社区生态与战略布局看Spring AI与LangChain4j的长期价值 当技术决策者面对两个功能相近的开源项目时,功能对比表格往往只是决策的起点。真正决定技术选型成败的,是项目背后的社区活力、维护模式与长期演进路线。Spring AI与LangChain4j作为Java生态中两…...
py每日spider案例之某website参数token获取(ob混淆,难度一般)
逆向参数: 请求代码: import requestsheaders = {"accept": "*/*","accept-language": "zh-CN,zh;q=0.9","cache-control": "n...
服饰可持续设计:软萌拆拆屋支持环保材料拆解标识生成
服饰可持续设计:软萌拆拆屋支持环保材料拆解标识生成 1. 项目介绍与核心价值 软萌拆拆屋是一款基于SDXL架构与Nano-Banana拆解LoRA技术打造的智能服饰解构工具。它能够将复杂的服装结构转化为清晰、整齐的零件布局图,为服饰可持续设计提供可视化支持。…...
终极无损音频压缩指南:FLAC 1.5.0完整教程与实战应用
终极无损音频压缩指南:FLAC 1.5.0完整教程与实战应用 【免费下载链接】flac Free Lossless Audio Codec 项目地址: https://gitcode.com/gh_mirrors/fl/flac 在数字音频的世界中,存储空间与音质质量往往难以兼得,但FLAC(Fr…...
AI学习笔记二
一,NumPy库1,定义NumPy 是 Python 科学计算的核心库,专为多维数组(ndarray) 设计,比 Python 原生列表快 10~100 倍,是数据分析、机器学习、深度学习的基础。2,基础代码示例import nu…...
Zenith.NET v0.0.7:Metal 后端落地,.NET GPU 抽象的跨平台旅程
为什么要做 Zenith.NET?.NET 生态有不少图形相关的库——绑定层如 Silk.NET、Vortice,抽象层如 Veldrid、Evergine。但现有的抽象层要么停留在较旧的 API 版本(如 DX11/OpenGL),要么是商业引擎的一部分,难以…...
八大网盘直链解析工具:如何绕过客户端限制实现高效文件下载
八大网盘直链解析工具:如何绕过客户端限制实现高效文件下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…...
tao-8k Embedding模型惊艳案例:工业设备维修手册语义检索实战
tao-8k Embedding模型惊艳案例:工业设备维修手册语义检索实战 1. 项目背景与需求 在工业设备维修领域,技术人员经常需要从厚厚的维修手册中快速找到相关故障的解决方案。传统的关键词搜索方式存在明显局限:如果维修手册中使用的是"泵体…...
实战应用:利用快马平台模拟鸿蒙pc版与手机的笔记跨设备同步功能
最近在研究鸿蒙系统的跨设备协同功能,特别是PC端和手机端之间的数据同步场景。作为一个开发者,我很好奇这种分布式能力在实际项目中如何落地。于是我用InsCode(快马)平台快速搭建了一个模拟原型,下面分享下实现思路和过程。 项目整体设计 这个…...
