java数据类型的划分
Java具有两大数据类型:
- 内置数据类型
- 引用数据类型
一、内置数据类型
Java语言提供了8中基本数据类型,其中,数字类型有6种(四个整型,两个浮点型),一种字符型,一种布尔型。
- byte:
- byte数据类型是8位、有符号的,以二进制补码表示的整数;
- -128(-2^7) < byte < 127(2^7 -1)
- 默认值是0;
- byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一;
- short:
- short数据类型是16位、有符号的以二进制补码表示的整数;
- -32768(-2^15) < short< 32767(2^15 -1)
- 默认值是0;
- Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一;
- int:
- int数据类型是32位、有符号的以二进制补码表示的整数;
- -2,147,483,648(-2^31) < int < 2,147,483,647(2^31 - 1)
- 默认值是0;
- 一般地整型变量默认为int类型;
- long:
- long数据类型是64位、有符号的以二进制补码表示的整数;
- -9,223,372,036,854,775,808(-2^63) < long < 9,223,372,036,854,775,807(2^63 -1)
- 默认值是 0L;
- 这种类型主要使用在需要比较大整数的系统上;
- float:
- float数据类型是单精度、32位、符合IEEE 754标准的浮点数;
- float在储存大型浮点数组的时候可节省内存空间;
- 默认值是0.0f ;
- 浮点数不能用来表示精确的值,如货币;
- double:
- double数据类型是双精度、64位、符合IEEE 754标准的浮点数;
- 浮点数的默认类型为double类型;
- 默认值是0.0d;
- double类型同样不能表示精确的值,如货币;
- char:
- char类型是一个单一的16位Unicode字符;
- ’\u0000’(即为0) < char< ‘\uffff’(即为65,535)
- 默认值是’\u0000’;
- char数据类型可以储存任何字符;
- boolean:
- boolean数据类型表示一位的信息;
- 只有两个取值:true和false;
- 默认值是false;
- 这种类型只作为一种标志来记录true/false情况;
- 数据类型表格:
数据类型 | 字节 | 默认值 | 封装器类 |
---|---|---|---|
byte | 1 | 0 | Byte |
short | 2 | 0 | Short |
int | 4 | 0 | Integer |
long | 8 | 0L | Long |
float | 4 | 0.0f | Float |
double | 8 | 0.0d | Double |
char | 2 | \u0000 | Character |
boolean | 1 | false | Boolean |
二、引用数据类型
-
java引用数据类型: 类(class), 接口(interface),数组(array),(枚举类型、注解类型、字符串(String)类型)。可以说,只要不是基本数据类型.都是引用数据类型。
-
被创建时,首先会在栈内存中分配一块空间,然后在堆内存中也会分配一块具体的空间用来存储数据的具体信息,即hash值,然后由栈中引用指向堆中的对象地址.
public class Test{
public static void main(String args[]){
// 基本数据类型
int i = 0;
int j = 1;
double x = 1.2;
// 引用数据类型
String str1 = "Hello";
String str2 = "Hello";
}
}
- 基本数据类型的值都存在栈内存中,会存在相同的值,而引用数据类型是地址的引用,具体可参考:
- 关于java对象内存分析与初步引用传递分析.