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

wordpress建站多用户国际实时新闻

wordpress建站多用户,国际实时新闻,厦门律师网站建设,网站前台用什么开发一、为什么需要包装类 在Java的世界里,万物皆对象——但基本数据类型除外。为了解决基本类型无法参与面向对象操作的困境,Java提供了包装类(Wrapper Classes)。让我们通过一个表格快速了解基本类型及其对应的包装类: 基本数据类型包装类字节…

一、为什么需要包装类

在Java的世界里,万物皆对象——但基本数据类型除外。为了解决基本类型无法参与面向对象操作的困境,Java提供了包装类(Wrapper Classes)。让我们通过一个表格快速了解基本类型及其对应的包装类:

基本数据类型包装类字节大小默认值
byteByte10
shortShort20
intInteger40
longLong80L
floatFloat40.0f
doubleDouble80.0d
charCharacter2'\u0000'
booleanBoolean1false

二、核心概念解析

1. 装箱(Boxing)

将基本数据类型转换为对应的包装类对象

// 手动装箱(JDK1.5之前的方式)
Integer manualBoxing = Integer.valueOf(100);// 自动装箱(JDK1.5+)
Integer autoBoxing = 100; 

2. 拆箱(Unboxing)

将包装类对象转换为对应的基本数据类型

Integer numObj = 200;// 手动拆箱
int manualUnboxing = numObj.intValue();// 自动拆箱
int autoUnboxing = numObj;

三、自动装箱拆箱原理剖析

Java编译器在编译时会自动插入转换代码:

// 编译前代码
Integer boxed = 42;
int unboxed = boxed;// 编译后等效代码
Integer boxed = Integer.valueOf(42);
int unboxed = boxed.intValue();

四、关键注意事项

1. 空指针异常(NullPointerException)

Integer nullable = null;
// 下面这行代码会抛出NullPointerException
int dangerous = nullable; 

2. 缓存机制

Java对部分包装类对象进行了缓存优化:

Integer a = 127;
Integer b = 127;
System.out.println(a == b); // true (使用缓存)Integer c = 128;
Integer d = 128;
System.out.println(c == d); // false (新建对象)

3. 性能考量

在循环中使用自动装箱会带来性能开销:

// 低效写法:每次循环都会创建Integer对象
Long sum = 0L;
for (long i = 0; i < Integer.MAX_VALUE; i++) {sum += i; // 自动装箱
}// 优化写法:使用基本类型
long sum = 0L;

五、实际应用场景

1. 集合类存储

// 只能存储对象,不能存储基本类型
List<Integer> numbers = new ArrayList<>();
numbers.add(1);   // 自动装箱
numbers.add(2);int first = numbers.get(0); // 自动拆箱

2. 泛型使用

// 泛型类示例
public class Box<T> {private T value;public void set(T value) { this.value = value; }public T get() { return value; }
}Box<Integer> intBox = new Box<>();
intBox.set(100); // 自动装箱
int val = intBox.get(); // 自动拆箱

3. 数据库操作

// 处理可能为null的数据库整数字段
Integer age = resultSet.getInt("age");
if (age != null) {System.out.println("年龄:" + age);
} else {System.out.println("年龄信息缺失");
}

六、常见面试题解析

1. 下面代码的输出是什么?

Integer a = 100;
Integer b = 100;
Integer c = 200;
Integer d = 200;System.out.println(a == b); // true
System.out.println(c == d); // false

解析:Java对-128到127之间的Integer对象进行了缓存

2. 如何正确比较包装类对象?

Integer x = new Integer(300);
Integer y = new Integer(300);System.out.println(x == y);      // false(比较对象引用)
System.out.println(x.equals(y)); // true(比较对象值)

3. 下面代码是否存在性能问题?

Double total = 0.0;
for (int i = 0; i < 1000000; i++) {total += i; 
}

解析:每次+=操作都会发生拆箱和装箱操作,应改用基本类型double

七、总结

  • 装箱:基本类型 → 包装类对象(自动/手动)

  • 拆箱:包装类对象 → 基本类型(自动/手动)

  • 最佳实践

    1. 在循环中避免使用自动装箱

    2. 比较包装类对象使用equals()而非==

    3. 警惕包装类可能的null值导致的NPE

    4. 了解-128~127的Integer缓存机制

http://www.dtcms.com/wzjs/407116.html

相关文章:

  • 威县做网站哪儿便宜关键词优化公司靠谱推荐
  • 深圳网站建设公司排行榜百度app
  • 动态网站开发组合中央常委成员名单
  • 做家教需要什么哪个网站的会员日本免费服务器ip地址
  • 有什么有什么好的学做饮品的网站长沙网络推广平台
  • 网站建设的请示关键词指数查询工具
  • 揭阳做网站的优化关键词的方法
  • 在记算机上登陆一个网站点怎么做网站网络排名优化方法
  • 邢台seo价格可靠的网站优化
  • 下载网站系统源码广告联盟全自动赚钱系统
  • 将电脑做的网站放到外网搜索关键词排行榜
  • 白城学做网站台州seo排名扣费
  • 自己做的微信网站经常被停止访问自助建站平台
  • 国外做网站推广推广软文范例大全500
  • 别人做的网站打不开推广普通话的宣传标语
  • 移动论坛网站模板百度关键字搜索排名
  • 图书馆管理网站建设logo网络推广公司排名
  • 做网站 0元代理成都搜狗seo
  • 阿里巴巴网站更新怎么做石家庄网站seo外包
  • 阿里巴巴网站怎么做学生个人网页制作教程
  • 免费的行情网站推荐下载安装百度搜索引擎首页
  • 成都科技网站建设费深圳全网营销推广平台
  • 设计日本网站免费的发帖收录网站
  • 迁安网站建设小程序开发流程
  • 自助免费网站制作策划品牌全案
  • php网站整合dz论坛网站建设优化推广
  • 上海企业响应式网站建设推荐国外网站如何搭建网页
  • 点开文字进入网站是怎么做的常见的网络推广方法有哪些
  • app网站建设教程视频教程百度广告位价格
  • 企业网站建设哪里做网站好如何注册网站