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

【java】基本数据类型和引用数据类型

在 Java 中,数据类型分为 基本数据类型 和 引用数据类型。它们的本质区别在于存储方式和操作方式。下面我会详细解释这两种数据类型,并用通俗易懂的语言帮助你理解。


1. 基本数据类型(Primitive Data Types)

基本数据类型是 Java 中最基础的数据类型,它们直接存储数据的值,而不是存储数据的引用(地址)。

特点
  • 直接存储数据值。

  • 存储在栈内存(Stack Memory)中。

  • 占用固定大小的内存空间。

  • 操作效率高。

Java 中的基本数据类型
数据类型大小(字节)默认值取值范围
byte10-128 到 127
short20-32,768 到 32,767
int40-2^31 到 2^31-1
long80L-2^63 到 2^63-1
float40.0f约 ±3.4e38(7 位有效数字)
double80.0d约 ±1.7e308(15 位有效数字)
char2'\u0000'0 到 65,535(Unicode 字符)
boolean1falsetrue 或 false
例子

java

Copy

int age = 25;          // 整数类型
double price = 19.99;  // 浮点数类型
char grade = 'A';      // 字符类型
boolean isStudent = true; // 布尔类型

2. 引用数据类型(Reference Data Types)

引用数据类型是指存储数据的引用(地址),而不是直接存储数据的值。引用数据类型包括类、接口、数组等。

特点
  • 存储的是数据的引用(地址),而不是数据本身。

  • 数据本身存储在堆内存(Heap Memory)中。

  • 占用内存空间不固定,取决于实际数据。

  • 操作效率相对较低(因为需要通过引用访问数据)。

Java 中的引用数据类型
  • 类(Class):如 StringInteger 等。

  • 接口(Interface):如 ListMap 等。

  • 数组(Array):如 int[]String[] 等。

例子

java

Copy

String name = "Alice"; // 字符串类型(引用类型)
int[] numbers = {1, 2, 3}; // 数组类型(引用类型)
List<String> fruits = new ArrayList<>(); // 集合类型(引用类型)

3. 基本数据类型 vs 引用数据类型

特性基本数据类型引用数据类型
存储内容直接存储数据值存储数据的引用(地址)
内存位置栈内存(Stack Memory)引用存储在栈内存,数据存储在堆内存(Heap Memory)
默认值有默认值(如 int 默认是 0默认值是 null
内存占用固定大小(如 int 占用 4 字节)不固定,取决于实际数据
操作效率相对较低(需要通过引用访问数据)
例子intdoublecharboolean 等Stringint[]List 等

4. 通俗比喻

  • 基本数据类型

    • 就像你口袋里直接放的钱(现金),你可以直接使用它。

    • 例如:int age = 25; 就像你口袋里有一张 25 元的钞票。

  • 引用数据类型

    • 就像你口袋里放了一张银行卡(引用),银行卡指向银行账户里的钱(实际数据)。

    • 例如:String name = "Alice"; 就像你口袋里有一张银行卡,卡里存着名字 "Alice"。


5. 例子对比

基本数据类型:

java

Copy

int a = 10;
int b = a; // b 复制了 a 的值
b = 20;    // 修改 b 不会影响 a
System.out.println(a); // 输出 10
引用数据类型:

java

Copy

int[] arr1 = {1, 2, 3};
int[] arr2 = arr1; // arr2 复制了 arr1 的引用
arr2[0] = 100;     // 修改 arr2 会影响 arr1
System.out.println(arr1[0]); // 输出 100

6. 总结

  • 基本数据类型:直接存储数据值,效率高,占用固定内存。

  • 引用数据类型:存储数据的引用,数据存储在堆内存中,占用内存不固定。

相关文章:

【java】基本数据类型和引用数据类型

在 Java 中&#xff0c;数据类型分为 基本数据类型 和 引用数据类型。它们的本质区别在于存储方式和操作方式。下面我会详细解释这两种数据类型&#xff0c;并用通俗易懂的语言帮助你理解。 1. 基本数据类型&#xff08;Primitive Data Types&#xff09; 基本数据类型是 Java…...

mybatis-lombok工具包介绍

Lombok是一个实用的]ava类库&#xff0c;能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法&#xff0c;并可以自动化生成日志变量&#xff0c;简化java开发、提高效率。 使用前要加入Lombok依赖...

2. grafana插件安装并接入zabbix

一、在线安装 如果不指定安装位置&#xff0c;则默认安装位置为/var/lib/grafana/plugins 插件安装完成之后需要重启grafana 命令在上一篇讲到过 //查看相关帮助 [rootlocalhost ~]# grafana-cli plugins --help //从列举中的插件过滤zabbix插件 [rootlocalhost ~]# grafana…...

零基础学CocosCreator·第九季-网络游戏同步策略与ESC架构

课程里的版本好像是1.9&#xff0c;目前使用版本为3.8.3 开始~ 目录 状态同步帧同步帧同步客户端帧同步服务端ECS框架概念ECS的解释ECS的特点EntityComponentSystemWorld ECS实现逻辑帧&渲染帧 ECS框架使用帧同步&ECS 状态同步 一般游戏的同步策略有两种&#xff1a;…...

为什么配置Redis时候要序列化配置呢

序列化和反序列化&#xff1f;&#xff1a; 序列化&#xff1a;将对象转换为二进制数据&#xff0c;以便存储到Redis中。 反序列化&#xff1a;将Redis中的二进制数据转换回对象&#xff0c;以便在应用程序中使用。 1. 默认序列化器的问题 如果不配置序列化器&#xff0c;Re…...

使用爬虫获取1688商品分类:实战案例指南

在电商领域&#xff0c;获取商品分类信息对于市场分析、选品决策和竞争情报收集至关重要。1688作为国内领先的B2B电商平台&#xff0c;提供了丰富的商品分类数据。通过爬虫技术&#xff0c;我们可以高效地获取这些分类信息&#xff0c;为商业决策提供有力支持。 一、为什么选择…...

C#打印设计器

C# 打印设计器&#xff0c;功能强大却操作简单&#xff0c;小白也能快速上手&#xff01; 主要功能&#xff1a; 支持多种设计元素&#xff1a; 文字、图片、图形、二维码、条形码等&#xff0c;满足您多样化的设计需求。 灵活排版&#xff0c;精准定位&#xff1a; 支持拖拽…...

Codeforces Round 1004 (Div. 2)(A-E)

题目链接&#xff1a;Dashboard - Codeforces Round 1004 (Div. 2) - Codeforces A. Adjacent Digit Sums 思路 只有两种情况&#xff1a;n1之后没有进位&#xff0c;y-x1。n1之后进位(y-x-1)%90。 代码 void solve(){int x,y;cin>>x>>y;if(y-x1){cout<<…...

pnpm的使用

pnpm的使用 1.安装和使用2.统一包管理工具下载依赖 1.安装和使用 pnpm:performant npm &#xff0c;意味“高性能的npm”。 pnpm由npm/yarn衍生而来,解决了npm/yarn内部潜在的bug,极大的优化了性能,扩展了使用场景。被誉为“最先进的包管理工具”。 pnpm安装指令: npm i -g p…...

vscode调试redis

系统&#xff1a;ubuntu redis&#xff1a;redis-6.0.3 1.在vs中安装c/c编译插件 2.用vscode打开redis-6.0.3 3.在菜单中找到run->Add Configuration… 4.会在目录中生成一个./vscode目录&#xff0c;里面包含launch.json,修改launch.json中的program:${workspaceFolder}…...

Windows逆向工程入门之汇编指令格式与操作数类型

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 一、汇编指令格式基础 二、操作数类型详解 1. 立即数&#xff08;Immediate&#xff09; 2. 寄存器操作数&#xff08;Register&#xff09; 3. 内存操作数&#xff08;Memory&#…...

亚远景-ASPICE 4.0与敏捷开发:如何实现高效协同

ASPICE 4.0与敏捷开发的结合是汽车软件开发领域的重要趋势。通过合理融合&#xff0c;可以实现高效协同&#xff0c;提升软件开发的质量和效率。以下是实现高效协同的关键要点&#xff1a; 1. 理解ASPICE 4.0与敏捷开发的互补性 ASPICE 4.0强调软件开发过程的规范性、可追溯性…...

pptx文档提取信息

目录 一、前言二、python-pptx提取核心代码三、LibreOffice 转换pdf再提取的核心代码一、前言 pptx文档提取解析常用的库。 如果只需要解析 .pptx 的文本、表格、图片,推荐使用 python-pptx(开源,轻量级)。 如果需要高性能、支持 .ppt、动画、格式转换,推荐 Aspose.Slid…...

蓝桥杯篇---超声波距离测量频率测量

文章目录 简介第一部分&#xff1a;超声波的简介工作原理1.发射超声波2.接收反射波3.计算时间差4.计算距离 硬件连接1.Trig2.Echo 示例代码代码说明注意事项1.声速2.延时精度3.硬件连接 第二部分&#xff1a;频率测量简介频率测量原理1.信号输入2.计数3.计算频率 硬件连接示例代…...

ML.Net二元分类

ML.Net二元分类 文章目录 ML.Net二元分类前言项目的创建机器学习模型的创建添加模型选择方案训练环境的选择训练数据的添加训练数据的选择训练数据的格式要预测列的选择模型评估模型的使用总结前言 ‌ML.NET‌是由Microsoft为.NET开发者平台创建的免费、开源、跨平台的机器学习…...

vite让每个scss文件自动导入某段内容

写了如下一个scss函数&#xff0c;希望自动导入到每个scss文件里面 vite.config.ts里面如下配置 import fs from fsconst filePath resolve(__dirname, ./src/assets/css/index.scss);const Minxcss fs.readFileSync(filePath, utf8); css: {preprocessorOptions: {scss: {…...

分享一个使用的音频裁剪chrome扩展-Ringtone Maker

一、插件简介 铃声制作器是一个简单易用的 Chrome 扩展&#xff0c;专门用于制作手机铃声。它支持裁剪音频文件的特定片段&#xff0c;并将其下载为 WAV 格式&#xff0c;方便我们在手机上使用。无论是想从一段长音频中截取精彩部分作为铃声&#xff0c;还是对现有的音频进行个…...

基于Python的Optimal Interpolation (OI) 方法实现

前言 Optimal Interpolation (OI) 方法概述与实现 Optimal Interpolation (OI) 是一种广泛应用于气象学、海洋学等领域的空间数据插值方法。该方法通过结合观测数据与模型预测数据&#xff0c;最小化误差方差&#xff0c;从而实现对空间数据的最优插值。以下是OI方法的一般步骤…...

初学 mybatis

前言 回顾之前 不使用 mybatis 框架&#xff0c;我们是怎么通过Java 操作数据库的 "jdbc" 前提&#xff1a;使用maven 构建的项目 1 添加 关于jdbc 的依赖&#xff0c;以及辅助操作数据库的 commons-dubli jar包 截取 前后端项目 2 添加配置文件里面内容有&…...

机器学习:k均值

所有代码和文档均在golitter/Decoding-ML-Top10: 使用 Python 优雅地实现机器学习十大经典算法。 (github.com)&#xff0c;欢迎查看。 在“无监督学习”中&#xff0c;训练样本的标记信息是未知的&#xff0c;目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律&…...

利用 Taotoken 实现跨模型 API 调用的自动降级与容灾策略

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用 Taotoken 实现跨模型 API 调用的自动降级与容灾策略 对于依赖大模型 API 的生产系统而言&#xff0c;服务的稳定性至关重要。…...

告别官方手册!i.MX6ULL SD卡启动盘制作保姆级教程(含dd命令详解与分区避坑)

i.MX6ULL SD卡启动盘制作实战指南&#xff1a;从原理到避坑全解析 引言 第一次拿到i.MX6ULL开发板时&#xff0c;很多开发者都会面临一个看似简单却暗藏玄机的任务——制作SD卡启动盘。官方文档虽然提供了步骤&#xff0c;但往往缺乏对底层原理的解释&#xff0c;导致新手在遇到…...

Arm Cortex-A75 PMU架构与性能监控实践

1. Cortex-A75 PMU架构概述性能监控单元(PMU)是现代处理器微架构中的关键调试组件&#xff0c;它通过硬件计数器实现对处理器内部行为的实时监测。Arm Cortex-A75作为高性能移动计算核心&#xff0c;其PMU设计具有以下架构特点&#xff1a;寄存器分组&#xff1a;分为控制寄存器…...

基于MCP协议与Ledger Connect构建安全的加密资产AI助手

1. 项目概述与核心价值最近在折腾AI智能体开发&#xff0c;特别是想给Claude Desktop这类工具增加点“超能力”&#xff0c;让它能直接读取我的财务数据&#xff0c;帮我分析月度开支或者规划预算。这个需求听起来简单&#xff0c;但实际操作起来&#xff0c;你会发现一个核心痛…...

终极Zotero中文文献管理指南:Jasminum插件让你的效率提升300%

终极Zotero中文文献管理指南&#xff1a;Jasminum插件让你的效率提升300% 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 你是否在…...

终极指南:如何免费解锁《原神》帧率限制,享受丝滑游戏体验

终极指南&#xff1a;如何免费解锁《原神》帧率限制&#xff0c;享受丝滑游戏体验 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 你是否厌倦了《原神》60帧的硬性限制&#xff1f;想在高…...

macOS版WPS Office优化指南:社区工具实现功能增强与界面定制

1. 项目概述&#xff1a;一个为macOS版WPS Office“松绑”的辅助工具如果你是一名长期在macOS上使用WPS Office的用户&#xff0c;那么对“lethehades/wps-macos-helper”这个项目标题可能瞬间就会心领神会。这不仅仅是一个简单的脚本或工具&#xff0c;它背后反映的是一个非常…...

2026届最火的十大AI辅助写作平台横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能生成内容技术取得突破性进展&#xff0c;此技术也就是AIGC。不过其运行成本给企业带…...

深度解析socat-windows:构建Windows网络数据管道的架构与实践

深度解析socat-windows&#xff1a;构建Windows网络数据管道的架构与实践 【免费下载链接】socat-windows unofficial windows build of socat http://www.dest-unreach.org/socat/ 项目地址: https://gitcode.com/gh_mirrors/so/socat-windows 当你需要在Windows环境中…...

5分钟快速上手!Calibre豆瓣插件终极安装指南,轻松获取中文图书元数据

5分钟快速上手&#xff01;Calibre豆瓣插件终极安装指南&#xff0c;轻松获取中文图书元数据 【免费下载链接】calibre-douban Calibre new douban metadata source plugin. Douban no longer provides book APIs to the public, so it can only use web crawling to obtain da…...