当前位置: 首页 > news >正文

新数据结构(8)——包装类

基本数据类型(轻点)

Java基本数据类型在内存中占用固定的大小,并且直接存储值,而不是对象的引用

整数类型

byte:8位,存储范围从-128到127

short:16位,存储范围从-32,768到32,767

int:32位,存储范围从-231-1,即-2,147,483,648到2,147,483,647。这是最常用的整数类型

long:64位,存储范围从-263-1。在数值后面加上Ll表示这是一个long类型的值

浮点类型

float:32位,单精度浮点数。在数值后面加上Ff表示这是一个float类型的值

double:64位,双精度浮点数。这是最常用的浮点数类型

字符类型

char:16位,存储Unicode字符。字符字面量用单引号括起来,例如'A'

布尔类型

boolean:表示真(true)或假(false

引用数据类型(轻点)

数组、类、接口

数组是一种可以存储多个相同类型数据的容器,它在内存中是连续存储的使用new关键字:int[] arr = new int[5];,表示创建一个长度为5的整型数组。直接初始化:int[] arr = {1, 2, 3, 4, 5};

类是Java中定义对象的模板,它封装了数据和操作这些数据的方法。类可以包含成员变量(属性)和成员方法(行为)。类支持继承、封装和多态等面向对象的特性。类是引用类型,通过new关键字创建对象实例,对象存储在堆内存中。定义一个类:public class Person { String name; int age; }。创建对象实例:Person person = new Person();

接口是一种特殊的引用数据类型,它定义了一组方法规范,但不提供具体实现。接口中的方法默认是public abstract,成员变量默认是public static final。从JDK 8开始,接口可以包含默认方法和静态方法。接口支持多继承,一个类可以实现多个接口。定义接口:public interface USB3 { void in(); void out(); }。实现接口:public class USBDevice implements USB3 { public void in() { ... } public void out() { ... } }。接口用于定义对象的行为规范,允许不同的类实现相同的接口,从而实现多态。

包装类的引入(中点)

对象的基本概念:对象是类的实例化,是堆内存中的一块内存空间。

在Java编程语言中,尽管很多概念都可以被视作对象来处理,但基本数据类型本身并不直接对应对象。为了弥补这一不足,并使基本数据类型能够像对象一样被操作,Java引入了包装类。这些包装类将基本数据类型封装在对象内部,从而允许基本数据类型以对象的形式存在和操作

基本数据类型和其对应包装类

如下图所示,基本数据类型byte的变量无法指向空值(null),因为它不是指针类型,而是直接存储数据值。相反,Byte作为byte的包装类,其对象可以指向空值(null),这证明了包装类Byte并不是基本数据类型,而是Java提供的一种将基本数据类型封装为对象的机制

128陷阱(重点)

128陷阱是Java编程语言中Integer类的一个特有现象,具体体现在当进行自动装箱时,数值-128到127之间的整数会被缓存并重用,而超出此范围的数值则不会,下图具体展示了这一陷阱的体现:

在创建对象时,通常需要为新对象开辟独立的内存空间。然而,Java的Integer类的valueOf()方法采用了一种特殊的机制,它预先创建并分配了一个包含-128到127范围内所有整数的数组。当使用valueOf()方法为在此范围内的整数赋值时,该方法会直接从该数组中取出对应的Integer对象,并返回其内存地址供使用,从而避免了不必要的内存分配。相反,如果赋值的整数超出了这个范围,valueOf()方法则会为新的整数值开辟独立的内存空间。这种内存分配方式的具体实现细节如下图所示。在上图中,变量a1和a2之所以相等,是因为它们都被赋值为-128到127范围内的整数,因此valueOf()方法使它们指向了数组中相同的Integer对象地址。而变量a3和a4不相等,则是因为它们被赋值为超出该范围的整数值,valueOf()方法为它们各自开辟了新的内存空间,因此它们指向的是不同的Integer对象地址。

自动拆装箱(重点)

将基本数据类型int转换为对应的包装类Integer的过程被称为装箱

将包装类Integer转换回基本数据类型int的过程则被称为拆箱

int  a = 10;
int  b = 10;
Integer a1 = 10;
Integer b1 = 10;
Integer a2 = new Integer(10);
Integer b2 = new Integer(10);
System.out.println(a == b);
//True  a和b存储的是相同的整数值,且它们都是基本数据类型,直接进行值比较相等
System.out.println(a1 == b1);
//True  由于128陷阱,a1和b1实际上引用的是同一个Integer对象的数组里的相同地址,输出True
System.out.println(a2 == b2);
//False 通过new关键字显式地创建了两个新的Integer对象a2和b2,即使它们的值都是10,但它们是两个不同的对象,存储在内存中的不同位置
System.out.println(a1 == a);
//True  在进行比较时,Java会自动将Integer对象a1拆箱为基本数据类型int的值,然后与基本数据类型int的变量a进行比较
System.out.println(a1.equals(a));
//True  和上面一样是自动拆箱,判断时候Integer要转出int来判断. equals()的底层还是==
System.out.println(a1 == a2);
//False  a1的值10是从catch数据当中获取的  a2的值10是自己创建创建的对象.
System.out.println(a == a2);
//True  自动拆箱,a2是Integer类型的 a是int类型的,判断时候Integer要转出int来判断.

相关文章:

新数据结构(8)——包装类

基本数据类型(轻点) Java基本数据类型在内存中占用固定的大小,并且直接存储值,而不是对象的引用 整数类型 byte:8位,存储范围从-128到127 short:16位,存储范围从-32,768到32,767 …...

P5:使用pytorch实现运动鞋识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 我的环境 语言环境:python 3.7.12 编译器:pycharm 深度学习环境:tensorflow 2.7.0 数据:本地数据集-运动鞋 一…...

讲解下SpringBoot中MySql和MongoDB的配合使用

在Spring Boot中,MySQL和MongoDB可以配合使用,以充分发挥关系型数据库和非关系型数据库的优势。MySQL适合处理结构化数据,而MongoDB适合处理非结构化或半结构化数据。以下是如何在Spring Boot中同时使用MySQL和MongoDB的详细讲解。 1. 添加依…...

《手札·行业篇》开源Odoo MES系统与SKF Observer Phoenix API在化工行业的双向对接方案

一、项目背景 化工行业生产过程复杂,设备运行条件恶劣,对设备状态监测、生产数据采集和质量控制的要求极高。通过开源Odoo MES系统与SKF Observer Phoenix API的双向对接,可以实现设备状态的实时监测、生产数据的自动化采集以及质量数据的同步…...

数据结构与算法之数组: LeetCode 905. 按奇偶排序数组 (Ts版)

按奇偶排序数组 https://leetcode.cn/problems/sort-array-by-parity/description/ 描述 给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。 返回满足此条件的 任一数组 作为答案。 示例 1 输入:n…...

【STM32】HAL库Host MSC读写外部U盘及FatFS文件系统的USB Disk模式

【STM32】HAL库Host MSC读写外部U盘及FatFS文件系统的USB Disk模式 在先前 分别介绍了FatFS文件系统和USB虚拟U盘MSC配置 前者通过MCU读写Flash建立文件系统 后者通过MSC连接电脑使其能够被操作 这两者可以合起来 就能够实现同时在MCU、USB中操作Flash的文件系统 【STM32】通过…...

docker nginx 配置文件详解

在平常的开发工作中,我们经常需要访问静态资源(图片、HTML页面等)、访问文件目录、部署项目时进行负载均衡等。那么我们就会使用到Nginx,nginx.conf 的配置至关重要。那么今天主要结合访问静态资源、负载均衡等总结下 nginx.conf …...

如何实现华为云+deepseek?

在华为云上实现跨账号迁移数据或部署DeepSeek模型,可以通过以下步骤完成: 跨账号数据迁移 创建委托:在源账号中创建一个委托(Agency),授予目标账号访问数据的权限。 复制镜像:在源账号中&…...

【学习笔记】计算机网络(三)

第3章 数据链路层 文章目录 第3章 数据链路层3.1数据链路层的几个共同问题3.1.1 数据链路和帧3.1.2 三个基本功能3.1.3 其他功能 - 滑动窗口机制 3.2 点对点协议PPP(Point-to-Point Protocol)3.2.1 PPP 协议的特点3.2.2 PPP协议的帧格式3.2.3 PPP 协议的工作状态 3.3 使用广播信…...

稀土抑烟剂——为汽车火灾安全增添防线

一、稀土抑烟剂的基本概念 稀土抑烟剂是一类基于稀土元素(如稀土氧化物和稀土金属化合物)开发的高效阻燃材料。它可以显著提高汽车内饰材料的阻燃性能,减少火灾发生时有毒气体和烟雾的产生。稀土抑烟剂不仅能提升火灾时的安全性,…...

Qt Pro、Pri、Prf

一、概述 1、在Qt中,通常使用.pro(project)、pri(private include)、prf(project file)三种文件扩展名来组织项目。对于模块化编程,Qt提供了Pro和Pri,Pro管理项目,Pri管理模块。 2、pro文件是Qt项目的核心文件,包含了…...

基于AIOHTTP、Websocket和Vue3一步步实现web部署平台,无延迟控制台输出,接近原生SSH连接

背景:笔者是一名Javaer,但是最近因为某些原因迷上了Python和它的Asyncio,至于什么原因?请往下看。在着迷”犯浑“的过程中,也接触到了一些高并发高性能的组件,通过简单的学习和了解,aiohttp这个…...

如何在MacOS上查看edge/chrome的扩展源码

步骤 进入管理扩展页面点击详细信息复制对应id在命令行键入 open ~/Library/Application Support/Microsoft Edge/Default/Extensions/${你刚刚复制的id} 即可打开访达中对应的更目录 注意 由于原生命令行无法直接处理空格 ,所以需要加转义符\,即:open ~/Librar…...

【xdoj-离散线上练习H】T234(C++)

解题心得: 写递归函数的时候,首先写终止条件,这有助于对整个递归函数的把握。 题目:输入集合A和B,输出A到B上的所有函数。 问题描述 给定非空数字集合A和B,求出集合A到集合B上的所有函数。 输入格式 第一行…...

Docker Desktop Windows 安装

一、先下载Docker desktop WIndows 下载地址 二、安装 安装超简单 一路 下一步 三、安装之后,桌面会出现一个 小蓝鲸图标,打开它 》更新至最新版本,不然小蓝鲸打开,一会就退出了。 》wsl --update (这个有时比较慢…...

springCloud-2021.0.9 之 GateWay 示例

文章目录 前言springCloud-2021.0.9 之 GateWay 示例1. GateWay 官网2. GateWay 三个关键名称3. GateWay 工作原理的高级概述4. 示例4.1. POM4.2. 启动类4.3. 过滤器4.4. 配置 5. 启动/测试 前言 如果您觉得有用的话,记得给博主点个赞,评论,收…...

JDK8 stream API用法汇总

目录 1.集合处理数据的弊端 2. Steam流式思想概述 3. Stream流的获取方式 3.1 根据Collection获取 3.1 通过Stream的of方法 4.Stream常用方法介绍 4.1 forEach 4.2 count 4.3 filter 4.4 limit 4.5 skip 4.6 map 4.7 sorted 4.8 distinct 4.9 match 4.10 find …...

windows生成SSL的PFX格式证书

生成crt证书: 安装openssl winget install -e --id FireDaemon.OpenSSL 生成cert openssl req -x509 -newkey rsa:2048 -keyout private.key -out certificate.crt -days 365 -nodes -subj "/CN=localhost" 转换pfx openssl pkcs12 -export -out certificate.pfx…...

玩转大语言模型——使用Kiln AI可视化环境进行大语言模型微调数据合成

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——三分钟教你用langchain提示词工程获得猫娘女友 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型—…...

2025 西湖论剑wp

web Rank-l 打开题目环境: 发现一个输入框,看一下他是用上面语言写的 发现是python,很容易想到ssti 密码随便输,发现没有回显 但是输入其他字符会报错 确定为ssti注入 开始构造payload, {{(lipsum|attr(‘global…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

day52 ResNet18 CBAM

在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

无法与IP建立连接,未能下载VSCode服务器

如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异&#xff…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM&#xff09…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...