JAVA学习总结基础篇(一)基本数据类型

时间:2023-02-16 19:53:45

一、前言

    编程即是人类为解决某个问题,通过编写定义一系列计算过程并让计算机代之实现的过程。具体为程序员(Coder/Programmer)通过编写一些指令让计算机去识别并运算出结果的过程。而这些指令即是通过编程语言去定义和描述。为了让编程更好的解决人们所需解决的种种问题,满足人们日益增长的需求,越来越多的编程语言被发明和改进。而Java作为一门对编程语言有非常好的支持的高级编程语言,已被许多广大编程爱好者、企业所接受和使用。而本博主之所以编写此篇乃至之后一系列的文章是为了巩固和总结自己对Java的学习和认知,如若此篇文章能对广大在学习Java的路途中能起到一定的帮助和引导作用,本博主自是倍感荣幸和欣慰。当然,博主为更好的学习和进步,如果文章中出现错误或对本篇文章有建议,欢迎广大程序员们指正和提出。


二、变量

    变量( variable )源于数学,通常是通过一个英文字母来代表未知的数值(没有计算出结果的数值)。而在计算机语言中,变量是一个能储存计算结果和表达一个值的抽象概念,这里所说的抽象指的是变量本身并不能储存值,它只是一个将能储存值的容器抽象出来的一个概念性的词。

    前面说到编程即是通过一门编程语言去定义一个程序的实现过程,而这个过程只有计算机才能实现。而实现的结果即是这个程序运行完成之后的结果,也即是计算结果,说到计算结果,大家编可以联想到数学,利用数学知识将一个式子的结果计算出来。大家可以这么去理解,把人们需要通过编程解决的问题看作是一道数学应用题,把数学当做一门编程语言,把变量看成是计算公式中未知数x、y之类的,那么,利用数学知识解题的过程即是利用编程语言编程的过程。最后,未知数便是计算结果,变量便存储了一个编程结果。当然,实际上可能并非如此简单,但从本质来上说,编程的结果即是一些数据的产生。大家看到的通过运行各种程序或软件后的各种的行为或者效果不过是一些数据的各种表达的效果。因此,我要说的是,编程就是产生数据结果,而变量,则在其中起到作用即是,存储一些给定的、或未知的数据,通常,一个变量可以存储多个不同的数据。

三、变量在计算机中的存在形式

    在讲变量的存在形式之前,我们需要大致了解什么是计算机内存。前面说到,编程的最终结果是产生一些数据,而这些数据保存在哪呢?大家肯定会以为是变量,那么变量又储存在哪呢?在计算机中,数据在计算机设备中的内存或硬盘之中,而变量是用来存储数据,因此,变量储存在计算机设备中的内存或硬盘之中,实际上,编程中的变量、程序、程序的运行后产生的结果数据最先都保存在内存中。

    内存是计算机的重要部件之一,它是与CPU沟通的桥梁,所有的程序都运行在内存中。而实际上,内存里面只保存数据,程序实际上也是数据,计算机中大家看到的图像也好、音频也好、文件也罢,实际上都是数据。只不过这些都是一些数据的不同的表现形式所展现的不同效果。

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

JAVA学习总结基础篇(一)基本数据类型

JAVA学习总结基础篇(一)基本数据类型                                          JAVA学习总结基础篇(一)基本数据类型

四、数据在计算机内存中的表达形式

    实际上,在计算机中,一切数据都是以二进制的形式存在,因为CPU其实只能识别0和1,最古老的编程语言(低级编程语言)——机器语言的就是用0和1表示(01010100101010....)计算机将0和1转换为高低电平,这实际上就是计算机识别编程语言的原理。而现在这么多高级编程语言的产生就是将一系列指令转变为机器语言,换言之,计算机所有高级编程语言编译后都将被翻译成CPU可直接解读机器语言。十进制数123用二进制表达为01111011,在计算机中,用8位(bit)二进制数表示一个字节(byte),即1byte = 8 bit。所以,在内存中,保存的都是二进制数据,以8位二进制数即一个字节为一个存储单元,每一个存储单元都有唯一与他对应的地址,二内存地址的表达形式实际上也是一个数值,只不过它一般用一个十六进制或者更高进制位的数来表示。

JAVA学习总结基础篇(一)基本数据类型

    我们知道,一个8位二进制数所能表达的数值的范围是00000000~11111111,即0~255(2的8次方),而内存中以8个二进制数为一个存储单元,那么,在内存中如何存储更大的值?它对应的地址又是怎样表达的?通过下面这张图,我想大家应该就可以理解了:

JAVA学习总结基础篇(一)基本数据类型

    从上面这张图可以看到,在内存中,一个字节(8位)只不过是最小的存储单位而已,通过将几个连续几个存储单位方便一块便可以存储更大的数据。而地址便是跨字节的,按字节编址的话,又这样一种关系:内存容量=末地址-首地址+1。比如上图,地址000004 - 000001 = 3 + 1 = 4。内存容量为4个字节,即32位二进制数,可以保存00000000000000000000000000000000~11111111111111111111111111111111,即是0~4294967295(2的32次方)。以此类推,地址跨度越大,内存容量越大,所能存储的数值就越大。

下面这张图是内存中储存不同数据的内存划分,最左边的十六进制数是地址,中间是一块块内存区,右边是内存区容量。

JAVA学习总结基础篇(一)基本数据类型

五、变量与内存的关系

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

六、JAVA中的变量

(一)变量类型

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

JAVA学习总结基础篇(一)基本数据类型

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

(二)char类型

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

(三)Java中变量的定义(声明)

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

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

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

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

①变量类型名

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

②变量名

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

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

 ③初始值

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

        JAVA学习总结基础篇(一)基本数据类型

 ④八种基本数据类型的字面值

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

        JAVA学习总结基础篇(一)基本数据类型

以下是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;
	}
}