余子越的博客
Toggle navigation
余子越的博客
主页
计算机网络
大数据分析
系统与工具
编程之路
容器引擎
作者
归档
标签
Java基本数据类型和包装类
2020-01-29 00:38:39
34
0
0
yuziyue
# 一. 数据类型 `Java`的数据类型分如下两种,引用类型可以赋值为`null`,表示空,但基本类型不能赋值为`null`。 - 基本类型:`byte,short,int,long,boolean,float,double,char` - 引用类型:所有`class`和`interface`类型 <br> `Java`核心库为每种基本类型都提供了对应的包装类型: |基本类型| 对应的引用类型| |-:-|-:-| |`boolean`| `java.lang.Boolean` |`byte` |`java.lang.Byte` |`short` |`java.lang.Short` |`int` |` java.lang.Integer` |`long` |`java.lang.Long` |`float` |`java.lang.Float` |`double` |`java.lang.Double` |`char` |`java.lang.Character` <br> # 二. 装箱与拆箱 这种直接把`int`变为`Integer`的赋值写法,称为自动装箱(`Auto Boxing`),反过来,把`Integer`变为`int`的赋值写法,称为自动拆箱(`Auto Unboxing`)。 <br> 我们把能创建“新”对象的静态方法称为静态工厂方法。比如`Integer.valueOf()`就是静态工厂方法,它尽可能地返回缓存的实例以节省内存。 <br> 通常情况下,类型的转换会自动进行,即自动装箱、自动拆箱。自动装箱和自动拆箱只发生在编译阶段,目的是为了少写代码。 ``` Boolean v1 = Boolean.valueOf(false); boolean v2 = v1.booleanValue(); Short v1 = Short.valueOf("1"); short v2 = v1.shortValue(); Byte v1 = Byte.valueOf("100"); byte v2 = v1.byteValue(); Integer i1 = Integer.valueOf(100); int i2 = i1.intValue(); Long v1 = Long.valueOf(1); long v2 = v1.longValue(); Float v1 = Float.valueOf("1.2"); float v2 = v1.floatValue(); Double v1 = Double.valueOf("1.2"); double v2 = v1.doubleValue(); Character v1 = Character.valueOf('a'); char v2 = v1.charValue(); ``` <br> ## 不变类 所有的包装类型都是不变类。我们查看Integer的源码可知,它的核心代码如下: ``` public final class Integer { private final int value; } ``` 因此,一旦创建了`Integer`对象,该对象就是不变的。 <br> 对两个`Integer`实例进行比较要特别注意:绝对不能用==比较,因为`Integer`是引用类型,必须使用`equals()`比较: <br><br><br>
上一篇:
Java枚举类型
下一篇:
Java字符串处理
0
赞
34 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
文档导航