新数据结构(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。在数值后面加上L
或l
表示这是一个long
类型的值
浮点类型
float
:32位,单精度浮点数。在数值后面加上F
或f
表示这是一个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…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...