笨方法学 Java -04-数据类型介绍
作者:谎言诞行    发布时间:2024年01月04日

0、关于计算机中数据的识别

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

image.png

图中所表示的是一个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);
    }
}

image.png


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()); //转换为大写字符,输出
    }
}

image.png

从上图可以看出,字符串类型(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);	
    }
}

image.png


本章节结束。

填写一种颜色的字符(不区分大小写),1分钟有效,点击图片刷新