如何申请网站空间和域名,seo优化交流,海南省建设厅网站首页,大连今天最新通知基本类型有默认值#xff0c;而包装类型初始为null。然后再根据这两个特性进行分业务使用#xff0c;在阿里巴巴的规范里所有的POJO类必须使用包装类型#xff0c;而在本地变量推荐使用基本类型。 Java语言提供了八种基本类型。六种数字类型#xff08;四个整数型#xff…基本类型有默认值而包装类型初始为null。然后再根据这两个特性进行分业务使用在阿里巴巴的规范里所有的POJO类必须使用包装类型而在本地变量推荐使用基本类型。 Java语言提供了八种基本类型。六种数字类型四个整数型两个浮点型一种字符类型还有一种布尔型。
1、整数包括int、short、byte、long初始值为0。
2、浮点型float、double初始值为0.0
3、字符char初始值为空格即 如果输出在Console上是看不到效果的。
4、布尔boolean初始值为false
基本型别大小最小值最大值boolean----------------char16-bitUnicode 0Unicode 2^16-1byte8-bit-128127short16-bit-2^152^15-1int32-bit-2^312^31-1long64-bit-2^632^63-1float32-bitIEEE754IEEE754double64-bitIEEE754IEEE754void
注意
表格里的^代表的是次方
Java采用unicode2个字节来表示一个字符1个字节等于16位。 基本类型的包装类
Integer 、Long、Short、Byte、Character、Double、Float、Boolean、BigInteger、BigDecmail
其中BigInteger、BigDecimal没有相对应的基本类型主要应用于高精度的运算BigInteger 支持任意精度的整数
BigDecimal支持任意精度带小数点的运算 基本类型int 、double、float、long、byte、boolean、char 封装类型 integer 、Double、Float、Long、Byte、Boolean、Char 基本类型的特点 1、基本数据类型在进行参数传递时使用的是值传递 2、基本类型的创建是在堆栈上创建的有泄漏问题 3、创建不是通过new进行的 封装类型的特点 1、通过new进行创建也可以直接进行赋值 2、进行参数传递的时候是使用的“引用传递”既地址传递的方式 3、创建是在堆上创建的 4、数据类型包装类的值是不可变的 封装类型的优势
创建封装类型是可以使用一些基本类型不具备的方法比如valueOftoString等等。还有你如果想传递一个int对象的引用而不是值那只能用封装类
基本类型与包装类型的异同
1、在Java中一切皆对象但八大基本类型却不是对象。
2、声明方式的不同基本类型无需通过new关键字来创建而封装类型则需new关键字。
3、存储方式及位置的不同基本类型是直接存储变量的值保存在堆栈中能高效的存取封装类型需要通过引用指向实例具体的实例保存在堆中
4、初始值的不同封装类型的初始值为null基本类型的的初始值视具体的类型而定比如int类型的初始值为0boolean类型为false
5、使用方式的不同比如与集合类合作使用时只能使用包装类型。
6、什么时候该用包装类什么时候该用基本类型看基本的业务来定这个字段允不允许null值如果允许则必然要用封装类否则基本类型就可以了。如果用到比如泛型和反射调用函数就需要用包装类
源码
看看 Boolean 的属性和构造方法了解一下它如何包装 boolean
// final boolean类型的属性通过构造方法注入值
private final boolean value;
// 构造方法 Boolean a true 实际上就是调用这个方法
public Boolean(boolean value) {this.value value;
}
// 构造方法
public Boolean(String s) {this(parseBoolean(s));
}简单来说就是boolean 定义的属性一定要有值如果 Boolean 对象值为 null解包过程中就会出现NPE 基本数据类型和包装类型使用标准 注
包装类的赋值方法是valueof但是从Java5.01.5开始JAVA虚拟机Java Virtual Machine可以完成基本类型和它们对应包装类之间的自动转换。因此我们在赋值、参数传递以及数学运算的时候像使用基本类型一样使用它们的包装类但这并不意味着你可以通过基本类型调用它们的包装类才具有的方法。另外所有基本类型包括void的包装类都使用了final修饰因此我们无法继承它们扩展新的类也无法重写它们的任何方法。
看一下valueof的源码了解缓存机制
public static Integer valueOf(int i) {assert IntegerCache.high 127;if (i IntegerCache.low i IntegerCache.high)return IntegerCache.cache[i (-IntegerCache.low)];return new Integer(i);
}
各个包装类缓存值范围 booleantrue和false byte-128127 char0127 short-128127 int-128127 long-128127 float和double没有缓存 在缓存范围内的值相当于已经开辟好了一块空间或者是已经new好了对象 Java--Integer的常量缓存池默认-128~127数值范围_integer缓存数据的范围-CSDN博客