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

济南中建设计院 官方网站米课wordpress建站

济南中建设计院 官方网站,米课wordpress建站,多导航织梦网站模板下载,网络营销专业是学什么的Java数据类型深入解析 本文主要介绍 Java 数据类型的相关知识,包括8 种基本类型、默认值、字面量表示、自动装箱与拆箱、类型转换规则(隐式转换、强制转换)、浮点型精度问题、字符与字符串、引用类型比较与常量池、数值溢出与处理、类型推断等…

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进阶——注解一文全懂 →
http://www.dtcms.com/a/470652.html

相关文章:

  • 从指令遵循到价值对齐:医疗大语言模型的进阶优化、对齐与工具集成综合技术白皮书
  • 个人商城网站备案医院网站源码php
  • 基于螳螂虾优化的LSTM深度学习网络模型(MShOA-LSTM)的一维时间序列预测算法matlab仿真
  • 合肥肥东网站建设河南河南省住房和城乡建设厅网站
  • 网站经营网络备案信息wordpress更换域名2017
  • 鸿蒙纯血ArkTS经典蓝牙(SPP)
  • php项目网站建设方案书佛山百度快速排名优化
  • 七彩喜艾灸机器人:当千年中医智慧遇上现代科技
  • 接待机器人与访客系统对接技术解析
  • 【ThinkPHP6系列学习-4】数据库操作
  • 网站 网站建设定制cad图做网站链接
  • 同一ip网站湖南省郴州市临武县
  • angularjs格式下拉框
  • Linux学习笔记--触摸屏驱动
  • 浏览器跨域Access-Control-Allow-Origin三五问
  • 中企动力做的网站经常打不开怎么做网页设计稿
  • c 手机网站开发做电商一个月可以赚多少钱
  • openFuyao v25.09 版本正式发布!社区发行版全新升级,AI推理进一步优化
  • 世界标准日:关于 “标准”
  • 从671B到70B,如何用更低成本实现企业大模型工程化的RAG、Agent与微调落地,大模型入门到精通,收藏这篇就足够了!
  • 给网站添加关键词流行的wordpress主题
  • 深入理解epoll_data数据关联机制:四种方式详解与实践指南
  • m3u8格式在直播场景中的应用
  • 医疗门户网站管理系统在线营销推广
  • 积分非线性(INL)和微分非线性(DNL)的含义与联系
  • JavaSE面向对象(上)
  • 光的礼赞:探索自然界中的神奇之光
  • 一个企业网站的建设流程微信小程序商城收费吗
  • C++核心语法精要指南
  • 网站中弹出广告怎么做的腾讯官方网站做书签