整数型 | 整数型 | 整数型 | 整数型 | 浮点型(单精度) | 浮点型(双精度) | 字符类型 | 布尔类型 |
---|---|---|---|---|---|---|---|
byte | short | int | long | float | double | char | boolean |
1字节 | 2字节 | 4字节 | 8字节 | 4字节 | 8字节 | 2字节 | 1字节 |
Byte | Short | Integer | Long | Float | Double | Character | Boolean |
(注)一个字节为8位,在2进制中可以组成2的8次方个数
(1) byte:
byte 数据类型是8位、有符号的,以二进制补码表示的整数;
最小值是 -128(-2^7);
最大值是 127(2^7-1);
默认值是 0;
byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
(2) short:
short 数据类型是 16 位、有符号的以二进制补码表示的整数;
最小值是 -32768(-2^15);
最大值是 32767(2^15 - 1);
默认值是 0;
Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
(3) int:
int 数据类型是32位、有符号的以二进制补码表示的整数;
最小值是 -2,147,483,648(-2^31);
最大值是 2,147,483,647(2^31 - 1);
默认值是 0 ;
一般地整型变量默认为 int 类型;
(4) long:
long 数据类型是 64 位、有符号的以二进制补码表示的整数;
最小值是 -9,223,372,036,854,775,808(-2^63);
最大值是 9,223,372,036,854,775,807(2^63 -1);
默认值是 0L;
这种类型主要使用在需要比较大整数的系统上;
(5) float:
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
float 在储存大型浮点数组的时候可节省内存空间;
float的精度是6位有效数字,取值范围是10的-38次方到10的38次方;
默认值是 0.0f;
浮点数不能用来表示精确的值,如货币;例子:float f1 = 234.5f。
(6) double:
double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
浮点数的默认类型为double类型;
double的精度是15位有效数字,取值范围是10的-308次方到10的308次方;
默认值是 0.0d;
double类型同样不能表示精确的值,如货币;例子:double d1 = 123.4。
(7) boolean:
boolean数据类型表示一位的信息;
只有两个取值:true 和 false;
这种类型只作为一种标志来记录 true/false 情况;
默认值是 false;
例子:boolean one = true。
(8) char:
char类型是一个单一的 16 位 Unicode 字符;
最小值是 \u0000(即为0);
最大值是 \uffff(即为65,535);
char 数据类型可以储存任何字符;
char型变量是用来存储Unicode编码的字符,Unicode编码字符集中包含了汉字,所以char型变量可以存储汉字
包括:类,接口,数组,枚举,注解
引用数据类型与基本数据类型区别:
String s1 = new String("abc") 创建了几个对象?
两个
1. new String 创建对象,在编译期间不能确定具体的值,所以会在 在在内存中创建的一个地址。
2. abc在常量池,有自己的地址。
== 与 equals区别:
==比较的是两个对象的引用(内存地址)是否相同,也用来比较基本数据类型的变量值是否相同。
equals比较的是内容相等,但是光内容相等不是真的相等,只有hashCode值相等时才是真的相等。
比较两对象完全相等时可以通过重写equals方法,重写equals方法必须重写hashCode方法。
什么是包装类:
java中的数据类型Int,double等它们不是对象,无法向上转型获取Object提供的方法,而String就可以,因为String是对象。基本数据类型由于这样的特性,无法参与转型,反射,泛型等,为弥补这缺陷,java提出包装类。
java为我们提供了基本数据类型的包装类有两种:
1.对象型包装类,不继承任何其他类。
2.数值型包装类,继承于Number类。
装箱:将基本数据类型封装为包装类对象,利用每一个包装类型的构造方法实现装箱操作。
拆箱:将包装类中包装的基本数据类型取出来。
JDK1.5以后提供自动拆装箱。
自动装箱的内存复用:
自动装箱时,对于Integer var=?,Integer 缓存池的大小默认为 -128~127,如果var指向的对象在-128 到127范围内赋值时,生成的Integer对象是由IntegerCache.cache()方法产生,他会复用对象,cache()方法会将位于该范围产生的Integer对象入池,下次使用时候,直接拿取,不会再创建。
byte->short->int->long->float->double (范围从小到大)
隐式转换:小范围自动转换大范围
byte i = 0;
int a =i;
long b = i;
float c =b;
double d =c;
short j =i;
强制转换:大范围转换小范围
int i=99;
byte b=(byte)i;
char c=(char)i;
float f=i;
double d = f;
f =(float) d;
货币包装类型:BigDecimal
JAVA在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算