java的数据类型分为基本数据类型和引用数据类型。
一、 基本数据类型(分配在栈上)
1) 数据类型
基本类型 | 大小 | 最小值 | 最大值 | 包装器类型 |
boolean | -- | -- | -- | Boolean |
char | 16 bits | Unicode 0 | Unicode 2 | Character |
byte | 8 bits | -128 | 127 | Byte |
short | 16 bits | -2^15 | -2^15-1 | Short |
int | 32 bits | -2^31 | +2^31-1 | Integer |
long | 64 bits | -2^63 | +2^63-1 | Long |
float | 32 bits | IEEE754 | IEEE754 | Float |
double | 64 bits | IEEE754 | IEEE754 | Double |
void | -- | -- | -- | Void |
2)弱知识点
1、byte 字节
byte是JAVA中最小的数据类型,它在内存中占8位(8个bit),取值范围从-128到127
JAVA使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数的符号位为1。一个byte它最大的正数值应为01111111,计算成10进制数应为127。而一个byte值的范围为11111111表示的无符号数,为255,就是说,一个byte它只能够表示255个数字,并且它的最大正数值为127。所以一个byte表示的范围应为127-255 到 127,即-128到127。
例子:赋值:byte I = 127
2、short 短整型
short类型在内存中占2个字节,取值范围从 -32768到32767
注:short型在赋值时,一旦值超过32767或小于-32768,则会产生编译错误。
赋值:short i = 32767;
3、char 字符型
char类型在内存中占2个字节。表示一个字符,也可以使用ASCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从 0 到 65535
注:在JAVA中,字符的表现形式为单个字符加上一对单引号修饰。
例子:赋值:char i = ‘a’; 或者 char i = 97;
4、基本数据转换规则
(1)JAVA中所有的数字变量都是有符号(正负)的。
(2)JAVA不允许类型的随意转换。只有数字变量可以进行转换,但是不能随意。
(3)带有小数点的数字变量默认都为double型。定义float型必须进行强制类型转换。
(4)所占字节数小的数字型变量赋值给所占字节数比它大的类型时不用强制类型转换,此时是自动转型。
(5)int型变量赋值给char型变量时,JVM会以int型变量值到ASCII码表中查找出所对应的字符,再赋值给char型变量。反之也是。但是遵循第4条规则。
(6)初始化简单数据类型时要注意赋值的范围,超出则会产生编译错误。
例子:
/**
* 基本数据类型互转实例
*/
public class DataTypeDemo {
public static void main(String[] args) {
// 按所占位数从小到大建立8个基本数据类型
boolean a = true;
byte b = 127;
char c = 'c';
short d = 3;
int e = 4;
float f = 5.5f; //带小数点的数字默认都为double型,所以强制转型
double g = 5.5;
long h = 666;
c = (char) e; //占字节数多的赋值给占字节数少的变量要强制转型
e = c; //自动转型
}
}
二、引用数据类型。
引用数据类型包含数组、类、接口、字符串
JAVA中,非简单数据类型的类型都是引用数据类型。
例子
/**
* 引用数据类型例子
*/
public class DataTypeDemo {
public DataTypeDemo(){
}
//覆盖了父类toString方法
public String toString() {
return super.toString();
}
public static void main(String[] args) {
1: DataTypeDemo dtd ; //声明了一个引用数据类型的变量
2: dtd = new DataTypeDemo(); //实例化了这个引用数据类型
}
}
总结:任何引用数据类型的初始化都需要先用new关键字来开辟一片内存空间,然后让引用数据类型变量指向这个空间的地址。
三、高精度数字
java还提供类两种高精度计算的:BigInteger和 BigDecimal,但它们不属于基本数据类型。