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

创建网站 优帮云杭州推广公司

创建网站 优帮云,杭州推广公司,嵌入式开发板推荐,合肥做微网站文章目录 1. 基本概念2. 自动装箱与拆箱3. 缓存机制4. 不可变性5. 常见陷阱与最佳实践a. 空指针异常b. 不要用 比较两个包装类实例c. 高精度计算d. 字符串解析 总结 1. 基本概念 Java提供了每个基本数据类型的包装类,位于java.lang包中。这些包装类允许我们将基本…

文章目录

        • 1. 基本概念
        • 2. 自动装箱与拆箱
        • 3. 缓存机制
        • 4. 不可变性
        • 5. 常见陷阱与最佳实践
          • a. 空指针异常
          • b. 不要用 `==` 比较两个包装类实例
          • c. 高精度计算
          • d. 字符串解析
      • 总结

1. 基本概念

Java提供了每个基本数据类型的包装类,位于java.lang包中。这些包装类允许我们将基本数据类型作为对象处理,从而在需要面向对象功能的地方(如集合框架、泛型编程)非常有用。

2. 自动装箱与拆箱
public class AutoBoxingUnboxing {public static void main(String[] args) {// 自动装箱Integer num = 42; // int -> Integer// 自动拆箱int value = num;  // Integer -> int// 使用包装类进行数学运算(会自动拆箱)Integer sum = num + 5;System.out.println("num: " + num);System.out.println("value: " + value);System.out.println("sum: " + sum);}
}
3. 缓存机制

某些包装类(如Integer)对特定范围内的值实现了缓存,默认为-128到127之间的值。这意味着在这个范围内的值使用 valueOf() 方法时不会创建新的对象。

public class CacheMechanism {public static void main(String[] args) {// 缓存范围内的值比较Integer i1 = Integer.valueOf(100); // -128 <= 100 <= 127Integer i2 = Integer.valueOf(100); // -128 <= 100 <= 127System.out.println(i1 == i2); // true,因为它们引用同一个对象// 超出缓存范围的值比较Integer i3 = Integer.valueOf(300); // 300 > 127Integer i4 = Integer.valueOf(300); // 300 > 127System.out.println(i3 == i4); // false,因为它们引用不同的对象}
}
4. 不可变性

所有包装类都是不可变的,一旦创建后其内部状态不能被修改。如果需要改变值,必须创建新的对象。

public class ImmutabilityExample {public static void main(String[] args) {Integer immutableInt = Integer.valueOf(42);// 如果需要改变值,必须创建新的对象Integer newInt = immutableInt + 1;System.out.println("Original: " + immutableInt); // 输出42System.out.println("New: " + newInt);            // 输出43}
}
5. 常见陷阱与最佳实践
a. 空指针异常

在拆箱操作中如果包装类实例为 null,则会抛出 NullPointerException

public class NullPointerTrap {public static void main(String[] args) {Integer nullableInt = null;try {int value = nullableInt; // 这里会抛出 NullPointerException} catch (NullPointerException e) {System.out.println("Caught NullPointerException");}}
}
b. 不要用 == 比较两个包装类实例

应该使用 equals() 或者对于数字类型的包装类可以使用 compareTo() 方法。

public class ComparisonTrap {public static void main(String[] args) {Integer i1 = new Integer(100);Integer i2 = new Integer(100);// 错误的做法:使用 == 比较对象引用System.out.println(i1 == i2); // 可能输出false// 正确的做法:使用 equals() 比较值System.out.println(i1.equals(i2)); // 输出true// 对于数字类型的包装类,也可以使用 compareTo()System.out.println(i1.compareTo(i2) == 0); // 输出true}
}
c. 高精度计算

对于需要高精度的计算,推荐使用 BigDecimal 来避免浮点数精度丢失的问题。

import java.math.BigDecimal;public class HighPrecisionCalculation {public static void main(String[] args) {BigDecimal preciseValue = new BigDecimal("0.1");BigDecimal result = preciseValue.multiply(new BigDecimal("3"));System.out.println("Precise result: " + result); // 输出0.3// 浮点数可能有精度问题double impreciseValue = 0.1;double impreciseResult = impreciseValue * 3;System.out.println("Imprecise result: " + impreciseResult); // 输出0.30000000000000004}
}
d. 字符串解析

处理可能抛出的 NumberFormatException,确保输入格式正确。

public class StringParsing {public static void main(String[] args) {try {int number = Integer.parseInt("123abc"); // 这里会抛出 NumberFormatException} catch (NumberFormatException e) {System.out.println("Invalid number format");}// 成功解析try {int number = Integer.parseInt("123");System.out.println("Parsed number: " + number);} catch (NumberFormatException e) {System.out.println("Invalid number format");}}
}

总结

通过上述代码示例,我们综合了Java数据包装类型的关键特性,包括:

  • 自动装箱与拆箱:简化了基本数据类型与对象之间的转换。
  • 缓存机制:提高了性能并减少了内存占用。
  • 不可变性:保证了线程安全性和共享安全性。
  • 常见陷阱与最佳实践:避免了常见的错误,如空指针异常、不正确的比较方式、浮点数精度丢失以及字符串解析失败。
http://www.ds6.com.cn/news/69323.html

相关文章:

  • 建好了网站怎么做外贸网站设计与制作教程
  • 怎样做自己的微商网站内蒙古seo优化
  • wordpress免费模板带演示数据库seo优化人员
  • 怎么上传网站到ftp如何推销自己的产品
  • 工作纪律生活纪律研讨发言福州网seo
  • 兄弟网络(西安网站建设制作公司)北京seo地址
  • 成都市做网站百度认证平台
  • 青浦做网站公司做网站平台需要多少钱
  • 龙岗网站建设公司seo是什么职位
  • 黑龙省建设厅网站经典软文案例100例简短
  • 苏州批量关键词优化建站seo是什么
  • 优秀网站首页个人网站建站流程
  • 万网网站备案授权书百度网站推广价格
  • 合肥网站改版天津seo排名扣费
  • 惠州做棋牌网站建设哪家服务好东莞网络营销渠道
  • 网络营销的定义与特点南京seo优化公司
  • 微信官方网站公众平台软文营销步骤
  • 野花日本高清完整版在线观看seo顾问能赚钱吗
  • 佛山市网站建设企业苏州seo网站系统
  • 二手车交易网站怎么做百度一下1688
  • net网站开发环境推广网站制作
  • 做短链的网站收录查询工具
  • 中石化建设工程有限公司网站百度爱采购怎样入驻
  • 书法网站开发的前景青岛网站建设公司哪家好
  • 沧州英文模板建站持续优化完善防控措施
  • 高淳做网站价格公司怎么做网站推广
  • 网站建设类别个人怎么做百度竞价
  • 上海企炬做的网站网上推广企业
  • dw如何用表格来做网站守游网络推广平台
  • 哪些网上订餐的网站做的好竞价排名的定义