张洪雷,高喜文,佟宏博
(盘锦职业技术学院,辽宁 盘锦 124000)
关键字:Java;基本数据类型;引用数据类型
Java的数据类型和C语言相比,更加的丰富也更复杂,在教学过程中,很多同学都很难准确使用各种数据类型,结合本人多年的教学经验,在这里对于Java的数据类型进行全面的解析,希望给学习Java的学习者们一些帮助
我们都知道,Java的数据类型包括两大类,分别是基本数据类型和引用数据类型。基本数据类型包括4类(共8种),引用数据类型包括3类,具体如图1所示
图1 Java 的数据类型
基本数据类型比较简单,和C语言中的数据类型相似,使用方法也比较简单,Java的基本数据类型又分为四类,共8种数据类型,具体情况如下表所示基本数据类型存储在栈空间中,存储速度很快,通过变量定义就可以创造一个基本数据类型的变量,系统会在栈空间中开辟指定大小的空间,该空间中存入变量的值,在变量的生存期结束后,基本数据类型所占的空间也会自动被释放。
表1 Java 的8 种基本数据类型
引用数据类型是比较复杂的数据类型,也是初学者不好掌握的一块内容,引用数据类型主要包括类、接口和数组。
(1)类。类可以是我们自己定义的类,也可以是系统提供的类,常见的有String、Scanner、Random、Integer等。
(2)接口。接口对于初学Java的人来说是十分不友好的,接口是常量和方法的集合,接口和类有相同的地方,也有很多的区别。相对于类来说,接口更不好理解一些,其实类要定义属性和方法,而接口则包括类要定义的方法,这些方法都是抽像的,接口不能像类那样实例成一个对象,但接口可以被类实现,一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。接口的出现主要就是为了解决类无法进行多重继承的缺点。
接口和类的区别如下表所示
(3)数组。数组和C语言中的数据相似,数组用来组织多个相同类型的数据,基本数据类型可以定义成数组,引用数据类型也可以定义成数组,如字符串数组就是一个引用数据类型的数组。
从概念上说,引用数据类型的标识符表示的是一片内存连续空间的首地址,这个地址指向堆空间的一片区域,用于存放引用数据类型的具体内容。
如int[] arr1={1,2,3,4};
int[] arr2=arr1;
以上语句在内存中存放的情况如图2所示。
图2 引用型数据内容存储情况
这时如果修改数组arr2的某个元素的值,则数组arr1中指定的元素的值也会发生变化。
表2 接口和类的区别
Java是强数据类型的编程语言,要求参与运算的所有量都必须有明确的数据类型,同时结果的数据类型会根据运算量的类型来确定。
(1)自动转换
类型自动转换是指在运算过程中,根据运算规则和参与运算的运算量类型,系统会自动进行转换某些运算量的类型。在Java的8种基本数据类型中,除boolean类型外,其它的7种数据类型的数据都是可以进行运算的,但由于他们所占内存的位数不同,因此在进行运算时首先要将低位数的操作数转换为较高位数的操作数,之后再进行运算,结果也是较高位数的类型,具体如下表所示时就会报错,这时我们就需要进行强制类型转换,即为c=(char)(c-32)
(3)使用方法进行转换
各种基本类型的转换可以通过自动转换或强制转换进行,但如果要想将数值型与字符串进行转换,就需要使用包装类的方法来转换数据类型了,接下来我们说一下int与String的转换方式,其它基本类型与String的转换方式可以参照int的转换。
(a)int转换成String,使用整型包装类Integer的toString()方法,例如:
inti=123;
String s=Integer.toString(i);
除此之外还可以使用空字符串连接的方式巧妙的将整型转换成字符串,如:
inti=123;
String s=””+i;
(b)String转换成int,使用整型包装类Integer的parseInt()方法,例如:
String s=”123”;
inti=Integer.parseInt(s);
使用这条语句时一定要保证被转换的字符串去换双引号后是一个整数,不然就会报错,因此使用此语句时建议进行异常处理。
表3 系统自动类型转换的规则
(2)强制转换
强制转换是一种显性的转换方式,其方法就是在要转换的数据前加上(要转换的数据类型的说明符),如:(int)3.5,就可以将双精度数3.5强制转换成整型数3。当将高位数的数赋值给低位数的变量时,就必须进行强制类型转换,否则系统就会报错,强制类型转换只能在除boolean外的7种基本数据类型间进行。
例:
char c=’a’;
c=c-32;
第二行程序是要将小写字母转换成大写字母,按上面的规则,char和int运算的结果是int,赋值给char
Java的数据类型较C语言更加的规范,这就要求编程人员对于参于运算的所有数据和运算结果的类型都要了然于胸,能否掌握各种数据类型之间的关系是学习Java面对第一难关,需要反复的练习和不断的感悟。