0、关于计算机中数据的识别
在计算机中,数据的存储和运算都是2进制的。数据的识别取决于数据类型所定义的存储单元长度。为了统一,几乎所有语言的单元长度都是8位(bit)2进制数据,即一个字节(byte)。

图中所表示的是一个4字节(byte)的存储信息。每个字节(byte)里面有一个8位(bit)的2进制数据。
那么这个4字节(byte)的存储信息,能识别成多少种数据呢?这个取决于数据类型所截取的字节(byte)数量。分析如下:
l 如果按1字节大小截取,这里是4个数据。
l 如果按2字节大小截取,这里是2个数据。
l 如果按3字节大小截取,这里是1个半数据。
l 如果按4字节大小截取,这里是1个数据。
正因为不同类型的数据,截取大小不一致,所以会导致很多古怪的问题。比如:不同编码的字符在转换时乱码。
下面,将介绍Java语言中的数据类型:基础数据类型 以及 引用数据类型。
1、Java的基础数据类型
Java语言种所涉及的基础数据类型有8种:
l 整数:byte,short,int,long
l 浮点数(小数):float,double
l 字符:char
l 布尔值(真假值):boolean
之所以称之为基础数据类型,是因为这些类型的数据,可以直接参与运算。比如:加、减、乘、除,真假判断。这里可能有些人会有疑问,char 数据也能运算?答案是可以的。因为char数据是通过字符映射表输出字符的。所以,它本身就是一个数值,可以参加运算。如下:
public class DataTester {
//程序入口
public static void main(String[] args) {
char a = 'a', b = 'b';
System.out.println(a+b);
}
}
2、Java的引用数据类型
上面我们介绍了基础数据类型。那么,除了上面8个类型,其余的都是引用数据类型。引用数据类型与基础数据类型最大区别是,引用数据类型的值指向一个内存地址。它不是一个具体的数值,所以无法直接参与运算。常见的引用类型有Java类(class)、Java接口(interface)、数组(array)等等。
注意:
在数据赋值的时候,基础数据类型是数值传递;引用类型是内存地址传递。如果要比较引用类型的数值,需要特定的功能方法。
3、为什么存在引用数据类型
使用引用数据类型,好处是非常多的。其中一个比较容易理解的就是,可以把数据以及关于数据的操作封装到一个类型中。在操作的时候,调用方便。如下:
public class DataTester {
//程序入口
public static void main(String[] args) {
String s = "a,b,c,d,,e,f,g";
System.out.println(s.toUpperCase()); //转换为大写字符,输出
}
}
从上图可以看出,字符串类型(String)的变量 s 的值为”a,b,c,d,,e,f,g”,它内部封装了toUpperCase 方法,用于转换字符为大写。
4、关于数据类型的范围
数据类型的范围一般指的是基础数据类型的数值范围。但是,这个东西不同平台的电脑,可能有数值差异,建议大家使用基础数据类型对应的引用类型来获取最大、最小值。样例代码如下:
public class DataTester {
//程序入口
public static void main(String[] args) {
System.out.println("byte 最小值:"+Byte.MIN_VALUE+", 最大值:"+Byte.MAX_VALUE);
System.out.println("short 最小值:"+Short.MIN_VALUE+", 最大值:"+Short.MAX_VALUE);
System.out.println("int 最小值:"+Integer.MIN_VALUE+", 最大值:"+Integer.MAX_VALUE);
System.out.println("long 最小值:"+Long.MIN_VALUE+", 最大值:"+Long.MAX_VALUE);
System.out.println("float 最小值:"+Float.MIN_VALUE+", 最大值:"+Float.MAX_VALUE);
System.out.println("double 最小值:"+Double.MIN_VALUE+", 最大值:"+Double.MAX_VALUE);
//char类型是字符,需要转换为int类型,才能显示数值
System.out.println("char 最小值:"+(int)Character.MIN_VALUE+", 最大值:"+(int)Character.MAX_VALUE);
System.out.println("boolean 最小值:"+Boolean.FALSE+", 最大值:"+Boolean.TRUE);
}
}
本章节结束。