JAVA数据类型分基本数据类型和引用数据类型。

1基本数据类型

Java里面包含8个基本数据类型,分别是:

booleanbytecharshortintfloatdouboelong

1.1byte 字节

byteJAVA中最小的数据类型,它在内存中占8(8bit),取值范围从-128127

文本框:JAVA使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数的符号位为1。一个byte它最大的正数值应为01111111,计算成10进制数应为127。而一个byte值的范围为11111111表示的无符号数,为255,就是说,一个byte它只能够表示255个数字,并且它的最大正数值为127。所以一个byte表示的范围应为127-255 到 127,即-128到127。文本框:注:byte型在赋值时,一旦值超过127或小于-128,则会产生编译错误。赋值:byte I = 127

1.2 short 短整型

short类型在内存中占2个字节,取值范围从 -3276832767

文本框:注:short型在赋值时,一旦值超过32767或小于-32768,则会产生编译错误。赋值:short i = 32767;

1.3 char 字符型

char类型在内存中占2个字节。表示一个字符,也可以使用ASCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从0 65535

文本框:注:在JAVA中,字符的表现形式为单个字符加上一对单引号修饰。赋值:char i = ‘a’; 或者char i = 97;

1.4int 整型

int型在内存中占4个字节。取值范围从 -2147483648 2147483647

赋值:int i = 10;

1.5float 单精度浮点型

float型在内存中占4个字节。取值范围从-3.4E38 3.4E38

赋值:float i = 1.0f;

1.6long 长整型

long型在内存中占8个字节。取值范围从 -9223372036854775808 9223372036854775807

1.7double 双精度浮点型

double 型在内存中占8个字节。取值范围从-1.7E308 1.7E308

1.8 boolean 布尔型

boolean类型只有两个值:truefalse文本框:单个boolean型的变量在内存中占1/8个字节,因为boolean型变量只有两个值,true和false,也就是计算机里面的0和1,0代表true,1代表flase,用1位代替即可,而一个byte占8位,所以boolean型变量在内存中只占1/8个字节

2基本数据类型的相互转换

2.1转型规则

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; //自动转型}}

2.2基本数据类型默认初值

类型

初始值

boolean

false

byte

0

char

0

short

0

int

0

float

0.0

double

0.0

long

0

文本框:注:当简单数据类型不赋初值,并且要使用它的时候会产生编译错误。在定义简单数据类型的数组时,JAVA会自动将这些初值赋给数组中的每个元素。基本数据类型默认初值表

3引用数据类型

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(); //实例化了这个引用数据类型}}看如下代码:

分析这个例子,看红色横线代码。

1行,我们声明了一个引用数据类型的变量,但是这个时候,只在内存中开辟了一个空间存放这个变量。而这个变量此时没有任何指向。

文本框:所以,我们可以说,引用数据类型就是指向一片内存空间地址的变量类型。任何引用数据类型的初始化都需要先用new关键字来开辟一片内存空间,然后让引用数据类型变量指向这个空间的地址。2行,我们实例化了一个对象,这个时候在内存中开辟了一片空间存放这个对象,并让之前声明的引用数据类型变量指向了这个内存空间的首地址。