Java数据类型

一、基本概念

Java数据类型分为两大类

1、基本数据类型

  1. 整型:byte、short、int、long
  2. 浮点型:float、double
  3. 字符型:char
  4. 布尔型:boolean
  • 每个基本数据类型都有一个包装类与之相对应。
  • 每个数值类型的包装类都继承了Number抽象类,实现了Comparable接口。
  • char类型与int和long类型可以自由转换,结果值是char类型值的ascll码。

2、引用数据类型

  1. 接口
    有一种接口称之为标记性接口(语义化),此接口中没有任何方法存在,类实现了这个接口则表示有这个功能。例如:

    1. 实现了Serializable接口表示类可以被序列化
    2. 实现了Cloneable接口表示类可克隆
  2. 数组

二、深度拓展(研究源码心得)

  1. 整型基本数据类型的包装类都有一个共同的设计,都有一个静态的内部类及一个缓存池数组,如果存储的值是-128到127之间则当做基本数据类型看待,如果存储的值是-128到127之外则当做引用数据类型看待,所以包装类型的值比较需要用equals方法。
  2. 因为数值型的包装类都实现了Comparable接口,于是它们在集合容器当中可以实现自然排序,每一种数值型的包装类都存储着基本数据类型最大和最小值,如果存储过程当中超越了这个值会形成数据溢出,向反的方向取值。
  3. 浮点类型的数据在进行算术运算时,因为精度的原因会造成数据不一致,推荐使用BigDecimal来进行运算并控制精度。

三、在使用中可以会遇到的坑

short s=1;
s=s+1;//出错 
s+=1;//不出错
  • 在表达式当中,如果有整型数据java默认是int。
  • 在表达式当中,不同的类型运算必须要统一类型。
for(int i=0;i<=Integer.MAX_VALUE;i++){

}//是死循环,防止数据溢出。
float f=3.14f; 
System.out.println(f==3.14);//返回false
  • 因为java中默认带小数点的为double类型。
Short s=128; 
Short s2=128;
/*
返回false,数值超过缓冲池范围大于127,将其看做引用数据类型,所以比较的是引用地址。
*/
System.out.println(s==s2);
Short s3 = 10;
Short s4 = 10;
/*
返回true,因为大于-128小于127在缓冲池范围之内将其看到为基本数据类型,此时比较的是数值,而不是引用地址
*/
System.out.println(s3==s4);
double d1=3.14;
System.out.println(d1+1);
/*
返回不是4.14,浮点类型的运算推荐使用BigDecimal,它能够控制精度的大小
*/

你可能感兴趣的:(Java数据类型)