------- android培训、java培训、期待与您交流! ----------
对于大多数编程程序而言,其一个基本的功能就是对各种类型的数据进行处理。
那么了解一门程序的数据类型的分类,对于初学编程语言的人来说就显得极为重要。
<一>在java这门编程语言当中,大致将要处理的数据分为以下几类。
1.基本数据类型:包括以下8小类。(末尾是分别在内存中存储时所需占用的字节数,
以及默认值)
类型 关键字 字节数 默认值
(1)布尔型 boolean 1个字节 false
(2)字节型 byte 2个字节 0
(3)短整型 short 2个字节 0
(4)整数型 int 4个字节 0
(5)长整型 long 8个字节 0
(6)字符型 char 2个字节 '\u0000 '
(7)单精度浮点型 float 4个字节 0.0F
(8)双精度浮点型 double 8个字节 0.0D
2.引用类型:包括以下3类
(1)类类型
(2)接口类型
(3)数组类型
下面具体分析基本类型中的各种类型的一些必须掌握的特点。
1.对于boolean类型来讲,它的变量取值只能是true或者是false,以下代码定义一个
boolean类型并被赋予初始值false.
boolean a=false;
另外一点,必须要指出的是,当java编译器把java源代码编译为字节码时,会用int
或者byte来表示boolean。用整数0来表示false,用任意一个非0整数来表示true,并
且,在java源程序当中,不允许把整数或者null赋值给boolean类型变量,当然,引用
类型也是不可以这样做的。以下代码编译不能通过。
boolean a=0;//编译出错,提示类型不匹配
boolean b=null;//编译出错,提示类型不匹配
2.byte,short,int,long都属于整数类型,而且都是有符号整数,与有符号整数相对应的
当然是无符号整数,两者都主要区别在于把二进制数转换为十进制数的方式不同。
还要注意点是,如果一个表达式当中都是整数,那么,返回值只可能是int类型或者
long类型,而如果一个整数的值在某种整数类型的取值范围之内,可以直接赋值,否则
需要强转。例如以下代码:
byte b=25;//25在byte取值范围,可直接赋值
byte a=(byte)255//255不在byte取值范围,需要强转
3.java通常对字符类型数据采用Unicode编码,这是因为计算机内部只能存储2进制数据,
所以必须对字符进行编码。以下是一些常见的字符编码:
ASCII码,ISO-8859-1,GB2312,GBK,Unicode,UTF
4.对于float以及double类型来讲,只强调一个值得注意的地方,就是当将这两种类型数据
强制转换为整数时,会产生严重误差,这是因为,小数部分被自动舍弃。
对于引用类型需要注意以下几点
(1)如果一个引用类型的变量不指向任何对象时,可以给它赋值为空。
(2)引用变量如果不指向空则一定指向实例对象,而java中对象的创建,一般伴随着new
语句的生成。
(3)引用变量中存放的不是对象本身,而是对象在堆内存中的地址值。
<二> 下面是对基本数据类型和引用数据类型进行简单区分的总结。
(1)基本类型代表简单的数据类型,比如整数,字符等。引用类型所引用的实例可以表示
任意一种复杂的数据结构。例如以下代码定义一个person类,它包含几个基本类型变量以及
类类型变量。
public class person{
long id; //身份证号码
String name; //名字
short age; //年龄
char sex; //性别
Person mother; //母亲
}
(2)基本类型仅仅表示数据类型,而引用类型所引用的实例除了表示复杂的数据类型之外,
还可以包括一些操作数据的功能或者说是行为。
char[] arr=new char[5]; //定义一个char类型数组引用
arr[0]='x'; //将这个数组的第一个元素赋值
<span style="font-size:18px;">(3)java虚拟机处理引用引用类型变量和基本类型变量的方式不同,对于基本类型变量,</span>
<span style="font-size:18px;">java虚拟机会为其分配数据类型实际占用的内存空间;而对于引用类型变量,它仅仅是一个</span>
<span style="font-size:18px;">指向堆区中某个实例的指针。</span>