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

Java进阶——数据类型深入解析

Java数据类型深入解析


        本文主要介绍 Java 数据类型的相关知识,包括8 种基本类型、默认值、字面量表示、自动装箱与拆箱、类型转换规则(隐式转换、强制转换)、浮点型精度问题、字符与字符串、引用类型比较与常量池、数值溢出与处理、类型推断等等。

本文目录

      • 基本数据类型分类与特性
      • 自动装箱与拆箱
      • 类型转换规则
      • 浮点型精度问题
      • 字符与字符串
      • 数组特性
      • 引用类型比较与常量池
      • 数值溢出与处理
      • 类型推断(Java 10+)
      • 其他注意事项
      • 业务场景下的最佳实践

基本数据类型分类与特性

  • 8种基本类型
    • 整型byte(8位)、short(16位)、int(32位,默认)、long(64位,需加L后缀)。
    • 浮点型float(32位,需加F后缀)、double(64位,默认)。
    • 字符型char(16位Unicode,单引号)。
    • 布尔型boolean(仅true/false,不可与整数互换)。
  • 默认值:整型/浮点型默认0,布尔型默认false,引用类型默认null
  • 字面量表示
long num = 100L;
float f = 3.14F;

未加后缀的浮点默认为double



自动装箱与拆箱

  • 包装类缓存机制
    • IntegerByte等包装类缓存-128~127的值,Integer.valueOf(127) == Integer.valueOf(127)true,但new Integer(127)会创建新对象。
    • 比较陷阱:包装类对象需用equals()而非==比较值。
Integer a = 127;  // 使用缓存对象
Integer b = 127;
System.out.println(a == b); // true(-128~127范围内)Integer x = 200;
Integer y = 200;
System.out.println(x.equals(y)); // true
  • 性能影响:频繁装箱拆箱(如循环内)会导致额外对象创建,影响性能。



类型转换规则

  • 隐式转换(自动提升)
    • 小类型转大类型自动提升(如byte→int)。
    • 表达式运算中,byte/short提升为intfloatdouble混合提升为double
  • 强制转换
    • 大类型转小类型需显式转换,可能丢失精度(如double→int截断小数)。
    • 示例:
byte b = (byte) (a + 1); // a为byte时仍需强制转换




浮点型精度问题

  • 避免精确计算float/double不适合金融计算(如0.1无法精确表示),应使用BigDecimal
double price1 = 0.1;
double price2 = 0.2;
System.out.println(price1 + price2); // 输出0.30000000000000004(精度问题!)BigDecimal total = new BigDecimal("0.1").add(new BigDecimal("0.2"));
System.out.println(total); // 0.3




字符与字符串

  • 字符串不可变性String修改会创建新对象,频繁拼接用StringBuilder
// 低效方式:频繁创建新对象
String orderId = "ORDER";
for (int i = 0; i < 1000; i++) {orderId += "-" + i; // 每次循环生成新String对象
}// 高效方式:使用StringBuilder
StringBuilder builder = new StringBuilder("ORDER");
for (int i = 0; i < 1000; i++) {builder.append("-").append(i);
}
String finalOrderId = builder.toString();
  • 字符串常量池
    • String s1 = "abc";(常量池)与String s2 = new String("abc");(堆)不同对象。
    • intern()方法可将字符串加入常量池。
String s1 = new String("ABC").intern();
String s2 = "ABC";
System.out.println(s1 == s2); // true




数组特性

  • 固定长度与默认值
    • 数组长度不可变,动态扩容需用ArrayList
    • 元素默认值:整型为0,布尔型为false,引用类型为null
// 固定长度数组的局限性
Product[] products = new Product[10];
products[0] = new Product();// 动态扩容推荐使用ArrayList
List<Product> productList = new ArrayList<>();
productList.add(new Product()); // 自动扩容int[] counts = new int[5];
System.out.println(counts[0]); // 0(基本类型默认值)
Product[] products2 = new Product[5];
System.out.println(products2[0]); // null(引用类型默认值)




引用类型比较与常量池

  • ==equals()==比较引用地址,equals()比较值。



数值溢出与处理

  • 溢出风险
    • 整型运算超出范围会循环(如Integer.MAX_VALUE + 1 → Integer.MIN_VALUE)。
    • 大数值用BigIntegerlong
long bigNumber = 3000000000L; // 超出int范围时必须加L后缀




类型推断(Java 10+)

  • var关键字
    • 仅限局部变量,需初始化(如var list = new ArrayList<String>();)。
    • 不可用于方法参数或返回值。




其他注意事项

  • 枚举类型enum是引用类型,用于定义固定常量集合。
public enum OrderStatus {PENDING, PAID, SHIPPED, DELIVERED, CANCELLED
}// 使用示例
OrderStatus status = OrderStatus.PAID;
if (status == OrderStatus.PAID) {System.out.println("订单已支付!");
}
  • 转义字符:如\n(换行)、\t(制表符)、\\(反斜杠)。



业务场景下的最佳实践

  1. 金额计算:无条件使用BigDecimal,避免double精度问题。
  2. 高频数值操作:优先使用基本类型(如int),减少自动装箱开销。
  3. 字符串拼接:使用StringBuilderStringBuffer(线程安全)。
  4. 状态管理:利用enum替代魔法数字,提升代码可读性。
  5. 数据校验:用户输入转换时务必捕获NumberFormatException
// 用户输入的字符串转整型
String input = "10";
try {int quantity = Integer.parseInt(input); // 可能抛出NumberFormatException
} catch (NumberFormatException e) {System.out.println("输入非数字!");
}



← 上一篇 Java进阶——Stream流以及常用方法详解
记得点赞、关注、收藏哦!
下一篇 Java进阶——注解一文全懂 →

相关文章:

Java进阶——数据类型深入解析

Java数据类型深入解析 本文主要介绍 Java 数据类型的相关知识&#xff0c;包括8 种基本类型、默认值、字面量表示、自动装箱与拆箱、类型转换规则&#xff08;隐式转换、强制转换&#xff09;、浮点型精度问题、字符与字符串、引用类型比较与常量池、数值溢出与处理、类型推断等…...

R语言+AI提示词:贝叶斯广义线性混合效应模型GLMM生物学Meta分析

全文链接&#xff1a;https://tecdat.cn/?p40797 本文旨在帮助0基础或只有简单编程基础的研究学者&#xff0c;通过 AI 的提示词工程&#xff0c;使用 R 语言完成元分析&#xff0c;包括数据处理、模型构建、评估以及结果解读等步骤&#xff08;点击文末“阅读原文”获取完整代…...

深度解析 ANSI X9.31 TR-31:金融行业密钥管理核心标准20250228

深度解析 ANSI X9.31 TR-31&#xff1a;金融行业密钥管理核心标准 在当今数字化金融时代&#xff0c;信息安全至关重要&#xff0c;而密钥管理则是保障金融数据安全的核心环节。ANSI X9.31 TR-31作为金融行业密钥管理的关键标准&#xff0c;为对称密钥的全生命周期管理提供了坚…...

视频字幕识别和翻译

下载的视频很多不是汉语的&#xff0c;我们需要用剪映将语音识别出来作为字幕压制到视频中去。 剪映6.0以后语音识别需要收费&#xff0c;但是低版本还是没有问题。 如果想要非汉语字幕转成中文&#xff0c;剪映低版本不提供这样功能。但是&#xff0c;用剪映导出识别字幕&am…...

Spring Boot 流式响应豆包大模型对话能力

当Spring Boot遇见豆包大模型&#xff1a;一场流式响应的"魔法吟唱"仪式 一、前言&#xff1a;关于流式响应的奇妙比喻 想象一下你正在火锅店点单&#xff0c;如果服务员必须等所有菜品都备齐才一次性端上来&#xff0c;你可能会饿得把菜单都啃了。而流式响应就像贴…...

算法之领域算法

领域算法 ♥一些领域算法知识体系♥ | Java 全栈知识体系...

【愚公系列】《Python网络爬虫从入门到精通》033-DataFrame的数据排序

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

软件安全性测试类型分享,第三方软件测试机构如何进行安全性测试?

在数字化时代&#xff0c;软件的安全性至关重要&#xff0c;因此软件产品安全性测试必不可少。软件安全性测试是指针对软件系统的漏洞、弱点及其他安全隐患进行评估和检测的过程。它旨在发现潜在的安全问题&#xff0c;以保护软件和用户的利益。通过系统化的测试&#xff0c;企…...

eMMC安全简介

1. 引言 术语“信息安全”涵盖多种不同的设计特性。一般而言&#xff0c; 信息安全是指通过实践防止信息遭受未经授权的访问、使用、披露、中断、篡改、检查、记录或销毁。 信息安全的三大核心目标为 机密性&#xff08;Confidentiality&#xff09;、完整性&#xff08;Integr…...

在VSCode 中使用通义灵码最新版详细教程

在 VSCode 中使用通义灵码&#xff1a;最新版详细教程与使用场景 Visual Studio Code&#xff08;简称 VSCode&#xff09;是一款由微软开发的轻量级、功能强大的开源代码编辑器&#xff0c;支持多种编程语言&#xff0c;深受开发者喜爱。而通义灵码&#xff08;TONGYI Lingma…...

Ubuntu20.04安装Isaac sim/ Isaac lab

2025年之后omniverse好像不能直接装Isaac sim了&#xff0c;要跳转到官网链接。 Isaac lab要在Isaac sim安装之后才能安装 Ubuntu20.04安装Isaac sim/ Isaac lab Isaac sim安装Isaac lab安装 Isaac sim安装 找到官网 Isaac sim官方文档 下载下来解压到本地文件夹&#xff0c…...

Redis 持久化方式:RDB(Redis Database)和 AOF(Append Only File)

本部分内容是关于博主在学习 Redis 时关于持久化部分的记录&#xff0c;介绍了 RDB 和 AOF 两种持久化方式&#xff0c;详细介绍了持久化的原理、配置、使用方式、优缺点和使用场景。并对两种持久化方式做了对比。文章最后介绍了 Redis 持久化的意义并与其他常见的缓存技术做了…...

spring boot 连接FTP实现文件上传

spring boot 连接FTP实现文件上传 maven&#xff1a; <!--ftp--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version></dependency>接口示例&#xff1a; ApiO…...

怎么进行mysql的优化?

MySQL 的优化是一个系统性的工作&#xff0c;涉及多个层面&#xff0c;包括查询优化、索引优化、配置优化、架构优化等。以下是一些常见的 MySQL 优化方法&#xff1a; 查询优化 避免全表扫描&#xff1a;确保查询能够使用索引&#xff0c;避免 SELECT *&#xff0c;只选择需要…...

Octave3D 关卡设计插件

课程参考链接 这位大佬有在视频合集中有详细的讲解&#xff0c;个人体验过&#xff0c;感觉功能很强大 https://www.bilibili.com/video/BV1Kq4y1C72P/?share_sourcecopy_web&vd_source0a41d8122353e3e841ae0a39908c2181 Prefab资源管理 第一步 在场景中创建一个空物体…...

【论文笔记-TPAMI 2024】FreqFusion:用于密集图像预测的频率感知特征融合

Frequency-aware Feature Fusion for Dense Image Prediction 用于密集图像预测的频率感知特征融合 Abstract&#xff1a;密集图像预测任务要求具有强类别信息和高分辨率精确空间边界细节的特征。为了实现这一点&#xff0c;现代分层模型通常利用特征融合&#xff0c;直接添加…...

DeepBI成单关键词管理策略:提升转化与曝光,助力电商业绩双增长

在电商竞争愈发激烈的市场环境中&#xff0c;优化广告投放的关键词管理是提升产品转化率和曝光量的关键。特别是对于那些已经证明其转化能力的成单关键词&#xff0c;如何更好地管理和优化&#xff0c;成为了卖家们亟需解决的问题。DeepBI通过一套智能化的管理方案&#xff0c;…...

ai-3、机器学习之逻辑回归

机器学习之逻辑回归 1、分类问题2、逻辑回归2.1、二分类问题线性回归2.2、二分类问题逻辑回归 1、分类问题 分类问题常用的算法&#xff1a;逻辑回归 y0 :垃圾邮件 y1&#xff1a;正常邮件 准确来说是分类任务与线性回归任务的区别 2、逻辑回归 2.1、二分类问题线性回归 分类…...

在kubernetes集群中持续压测 SpringCloud 应用,pod 的 memory cache 持续增长问题

问题描述 在kubernetes集群中压测 SpringCloud 应用,持续压测, pod 的 memory cache 持续增长,导致 pod 最终挂了。上图看看效果吧~pod的资源配置 cpu: 1~2 core内存:1~3 G pod 数:1分析思路 1)pod 级的 Memory Cache ,显示的为当前 pod 的 linux 系统的 cache 内存的…...

金融赋能绍兴纺织 民生银行助力外贸中小微企业“走出去”

在浙江绍兴&#xff0c;纺织业作为一张熠熠生辉的产业名片&#xff0c;承载着深厚的历史底蕴与蓬勃的发展活力。这里依傍长三角经济圈&#xff0c;交通网络纵横交错&#xff0c;将原材料产地与广阔市场紧密相连&#xff1b;产业集群高度成熟&#xff0c;上下游产业链完备&#…...

如何让旧电脑联网?安卓手机以太网共享来帮忙!

通过安卓手机以太网共享让旧电脑联网2026 年 5 月 21 日&#xff0c;阅读时长 3 分钟。有人喜欢摆弄 90 年代和 21 世纪初的旧电脑和软件&#xff0c;比如童年时的 Amiga 500 电脑至今仍被保留且让人爱不释手。不过&#xff0c;Windows 9x/XP 时代的计算机使用经历最让人怀念&a…...

OpenCore Legacy Patcher终极教程:如何让老旧Mac重获新生,运行最新macOS

OpenCore Legacy Patcher终极教程&#xff1a;如何让老旧Mac重获新生&#xff0c;运行最新macOS 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为老旧Ma…...

哔哩漫游X:全面解锁B站功能的终极ReVanced增强模块

哔哩漫游X&#xff1a;全面解锁B站功能的终极ReVanced增强模块 【免费下载链接】BiliRoamingX-integrations BiliRoamingX integrations and patches powered by ReVanced. 项目地址: https://gitcode.com/gh_mirrors/bi/BiliRoamingX-integrations B站作为中国最大的视…...

零代码也能做游戏?用Construct3半小时复刻经典《打砖块》

零代码也能做游戏&#xff1f;用Construct3半小时复刻经典《打砖块》当第一次听说"零代码游戏开发"时&#xff0c;大多数人的反应都是将信将疑。毕竟&#xff0c;游戏开发在传统认知中是需要掌握复杂编程语言的硬核技能。但今天&#xff0c;我要带你用Construct3这款…...

3分钟掌握ncmdump:专业级网易云音乐NCM格式解密方案

3分钟掌握ncmdump&#xff1a;专业级网易云音乐NCM格式解密方案 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在第三方播放器播放而困扰吗&#xff1f;ncmdump正是解决这一痛点的专业工具。…...

Keil µVision中实现函数级编译时间戳追踪方案

1. 在Vision调试器中追踪函数编写时间的完整方案作为一名嵌入式开发老手&#xff0c;我经常需要回溯某个关键函数的最后修改时间。特别是在团队协作或维护遗留代码时&#xff0c;准确掌握函数级别的版本信息能大幅提升调试效率。今天要分享的正是如何在Keil Vision调试环境中实…...

Seraphine:英雄联盟玩家的智能游戏助手完整指南

Seraphine&#xff1a;英雄联盟玩家的智能游戏助手完整指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine Seraphine是一款基于英雄联盟官方LCU API开发的智能游戏助手&#xff0c;专为《英雄联盟》玩家设计…...

Python FIT文件解析终极指南:3分钟掌握运动数据分析技巧

Python FIT文件解析终极指南&#xff1a;3分钟掌握运动数据分析技巧 【免费下载链接】python-fitparse Python library to parse ANT/Garmin .FIT files 项目地址: https://gitcode.com/gh_mirrors/py/python-fitparse 你是否拥有Garmin、Suunto等运动手表&#xff0c;却…...

总结模式的智能化升级

&#x1f4cb; 本文目录 一、前言 二、从工具到智能系统的升级 三、工具链完整演示 四、智能总结Agent整合实战 五、智能总结系统的核心价值 六、总结与展望 一、前言 1.1 本节内容简介 我们已经有了5个好用的总结工具&#xff0c;但问题来了&#xff1a;工具是死的&am…...

用机器学习与SHAP解析教育公平:巴西学生成绩预测模型实战

1. 项目概述&#xff1a;用数据透视巴西教育&#xff0c;一场关于公平的算法实验作为一名长期关注教育技术与数据分析的从业者&#xff0c;我始终对一个问题着迷&#xff1a;在一个学生背景千差万别的教育体系中&#xff0c;究竟哪些因素真正决定了他们的学业表现&#xff1f;是…...