JAVA基础总结(4)——JAVA的基本数据类型

**

前言

**

在前面章节中,我们在定义类的属性时用到了几个关键字(String、char、short、int),它们用来确定类属性所属的类型,即所属的类,因为类属性也是对象。但实际上,char、short和int这些关键字确切的说,并不是类,它们只是用来指定类属性基本数据类型的关键字,除了这三个实际上还有5个,也就是说JAVA中有8个基本数据类型。

变量

类属性又称为类的成员变量,以下简称变量,JAVA的8个基本数据类型即用来指定变量的类型;

变量在计算机中的存储形式

在将这8个基本数据类型之前,我们先来了解一下,变量在计算机中的存储形式:

在讲变量的存在形式之前,我们需要大致了解什么是计算机内存。在计算机中,数据在计算机设备中的内存或硬盘之中,而变量是用来存储数据,因此,变量储存在计算机设备中的内存或硬盘之中,实际上,编程中的变量、程序、程序的运行后产生的结果数据最先都保存在内存中。 内存是计算机的重要部件之一,它是与CPU沟通的桥梁,所有的程序都运行在内存中。而实际上,内存里面只保存数据,程序实际上也是数据,计算机中大家看到的图像也好、音频也好、文件也罢,实际上都是数据。只不过这些都是一些数据的不同的表现形式所展现的不同效果。

那么计算机中的内存是如何保存数据的?计算机内存被划分几个部分,每一部分都存储着计算机中不同的数据,具体为那几部分这里不做详述。我们需要了解的是,每一部分,每一个数据都有它对应的一个位置,位置用什么来表达?联想到现实生活,位置用地址来表达。也就是说,在内存中,每一个数据都有它唯一对应的一个地址,一个地址所指向的位置对应一个数值。
在这里插入图片描述 在这里插入图片描述

数据在计算机中表达形式

实际上,在计算机中,一切数据都是以二进制的形式存在,因为CPU其实只能识别0和1,最古老的编程语言(低级编程语言)——机器语言的就是用0和1表示(01010100101010…)计算机将0和1转换为高低电平,这实际上就是计算机识别编程语言的原理。而现在这么多高级编程语言的产生就是将一系列指令转变为机器语言,换言之,计算机所有高级编程语言编译后都将被翻译成CPU可直接解读机器语言。十进制数123用二进制表达为01111011,在计算机中,用8位(bit)二进制数表示一个字节(byte),即1byte = 8 bit。所以,在内存中,保存的都是二进制数据,以8位二进制数即一个字节为一个存储单元,每一个存储单元都有唯一与他对应的地址,二内存地址的表达形式实际上也是一个数值,只不过它一般用一个十六进制或者更高进制位的数来表示。
在这里插入图片描述
我们知道,一个8位二进制数所能表达的数值的范围是0000000011111111,即0255(2的8次方),而内存中以8个二进制数为一个存储单元,那么,在内存中如何存储更大的值?它对应的地址又是怎样表达的?通过下面这张图,我想大家应该就可以理解了:
在这里插入图片描述
从上面这张图可以看到,在内存中,一个字节(8位)只不过是最小的存储单位而已,通过将几个连续几个存储单位方便一块便可以存储更大的数据。而地址便是跨字节的,按字节编址的话,又这样一种关系:内存容量=末地址-首地址+1比如上图,地址000004 - 000001 = 3 + 1 = 4。内存容量为4个字节,即32位二进制数,可以保存0000000000000000000000000000000011111111111111111111111111111111,即是04294967295(2的32次方)。以此类推,地址跨度越大,内存容量越大,所能存储的数值就越大。
在这里插入图片描述

变量与内存的关系

变量实际上,可以这样理解。变量就是一个内存地址,而一个内存地址指向一个内存空间,往变量里面存值,就是往内存空间中存值,也就是说,存储在变量中的值,就是存值在内存中,一个变量代表一个指定的内存空间。在编程语言中,当我们声明一个变量的时候,实际上在就是在内存中申请了一块随时可以存放数值的内存空间,而这个内存空间的大小视你的变量类型而定,不同类型的变量,所占用的内存空间的大小不同。

JAVA中的变量

(一)变量类型

Java将数据分为整数(byte、short、int、long)、浮点数(float、double)、字符(char)、布尔(boolean)四大类共八种,每一种都有它的一个所能存储值的范围,每一种变量类型只能存储对应此类型和对应范围内的值。联系上文,每一个类型的变量在内存中占用一定的空间,占用的空间的大小和它所能存储值的范围相关。这就是JAVA的8种基本数据类型。

在这里插入图片描述
前面说到一个8位二进制数的范围为0~255,那么JAVA中的整型如何存储一个负数?关于二进数如何保存负数的相关大家可自行查询相关资料,这里不在赘述。

(二)char类型

char类型在这里比较特殊,因为它是用来储存字符数据的,包括英文字母、符号、中文字符等等,前面说到计算机内存中不是存储的二进制数吗?那么二进制数怎么表示字符数据呢?这里就涉及到了ASCII码和Unicode码的问题,大家可以自行查询资料了解,这里不再做详细说明。

(三)Java中变量的定义

Java中对以上八种数据类型变量的定义格式为:

变量类型名 变量名 = 初始值(对应该变量类型的字面值);

其中变量类型名为上表中的八种,变量名为自定义,初始值可指定可不指定,不指定时的形式为: 变量类型名 变量名;注意标识符“;”,java中每一条语句都应以分号结尾,java中所有的标识符号都为英文符号,而非中文符号。

下面对上述公式中各个部分做详细说明:

①变量类型名

即为上表8中基本类型的英文标识符(byte、short.....)

②变量名

变量名为自行定义,但为了代码的可读性和JAVA编码规则,必须遵循以下几条命名规则:

可由字母、数字、下划线和美元符组成,其中数字不能开头
不能包含空格
应该用有意义的单词
如果只有一个单词,所有字母小写,如果有多个单词,从第二个单词开始,首字母大写(即驼峰命名法)。

③初始值

  在定义变量时,如果不指定初始值,则默认值为该变量类型对应的初始值。

在这里插入图片描述
④八种基本数据类型的字面值

 在定义变量时,如果知道初始值,则必须是对应该变量数据类型的字面值。

在这里插入图片描述

(四)成员变量与局部变量

成员变量在类中定义,用于指定类的属性。而局部变量定义在方法体中,用于存储数据;注意:成员变量默认是有初始值的,所以一般在定义类属性时没有给它显示赋值。但是局部变量默认是没有初始值的,所以我们在方法体中定义局部变量的时候必须给他赋一个初始值,赋值用等于符号(=)表示。

以下是局部变量定义示例代码:

public class Main{
	public static void main(String[] args) {
		byte b = 0b00110100;
		short s = 12223;
		int i = 546363;
		int i2 = 0xFBCA2;
		long l = 13563486597498l;
		float f = 3.25f;
		double d = 3.14159;
		char c = 'x';
		char c2 = '我';
		boolean isOk = true;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章