Java中基本数据类型和包装类型的区别

1、包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址;基本类型不是 
2、包装类型是引用的传递;基本类型是值的传递 
3、声明方式不同
                基本数据类型不需要new关键字;
                包装类型需要new在堆内存中进行new来分配内存空间 
4、存储位置不同:
                基本数据类型直接将值保存在值栈中;
                包装类型是把对象放在堆中,然后通过对象的引用来调用他们 
5、初始值不同:
                int的初始值为 0 、 boolean的初始值为false 
                包装类型的初始值为null 
6、使用方式不同:
                基本数据类型直接赋值使用就好;
                包装类型是在集合如 coolectionMap时使用
 

### Java 基本数据类型包装数据类型的差异 #### 存储方式不同 基本数据类型直接存储实际的数据值,而包装数据类型则是对象形式存在,内部包含了相应的基本数据类型的值。对于基本数据类型而言,在栈中分配空间并保存其值;而对于包装类型,则是在堆上创建对象实例来容纳这些数值[^1]。 #### 类型体系区别 基本数据类型不是面向对象编程的一部分,因为它们并不是由定义出来的实体。相反,所有的包装器都是`java.lang`包下的具体实现的结果,这意味着可以调用方法于包装器之上,比如转换字符串表示法或获取最大最小可能取值等操作[^2]。 #### 默认初始值设定 当声明一个局部变量时(即在方法体内),如果它是基本数据类型则不会自动获得任何初值,程序员必须显式赋给它某个有效范围内的常量作为起始状态。然而,成员字段级别的基本数据类型会有一个默认初始化过程:整数类型被设为零(`0`)、布尔型置假(false)以及字符型为空白符('\u000')。相比之下,无论是局部还是成员级别的包装类型,默认情况下都将指向null引用,这表明尚未关联到具体的对象实例[^3]。 #### 使用场景考量 由于性能原因,在只需要简单运算而不涉及复杂逻辑处理的时候应该优先考虑采用基本数据类型。但是当需要利用面向对象特性如继承机制或是集合框架(例如ArrayList不允许存入原始类型而是要求传入Object子的对象),此时就应当选用合适的包装版本来进行编码工作。 ```java // Basic data type example int primitiveInt = 5; // Wrapper class example Integer wrapperInt = Integer.valueOf(5); // or simply new Integer(5); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值