上一讲我们讲了 Hello World,对于许多程序员来说,都是从这一句话开始入门的。算是打开了新世界的大门,而今天,给大家讲讲新世界的基本元素。

为什么叫做基本元素呢?因为当你们学编程到了最后,会发现无论什么样的算法或者是数据结构。落到了实处,也不过就是这有限的几种操作。就好像道家认为地火水风构建了世界一样。

第一个元素是申明变量。

意思是我告诉编译器,也就是告诉程序的执行者,我需要这么一个变量。或者,你可以把自己想象成上帝,上帝说要有光,于是有了光。你说,我需要有一个整数,于是有了:

int a ;

类型写在前面, 你给这个变量起的名字放在后面,加上分号,好了大功告成。整个世界(编译器)知道你创造了一个名称是a的这么一个int类型的变量。

然而,你这么写IDE十有八九是要报错的。

为什么?

因为你管杀不管埋,只告诉了编译器有这么一个变量,却没有告诉它值是多少。有良心的IDE会提醒你这样做是不行的,要负责到底。

其实,在很多语言比如C、Pascal当中声明和赋值是两个操作。但是在java当中,我们通常在声明的时候就为变量赋一个初始的值,称为初始化。这也是一个编程的好习惯,因为java是面向对象的语言,如果声明了对象不实例化赋值的话,很容易出现空指针报错。所以,在我们一开始学习编程的时候,就要养成好习惯,声明一个变量就给它赋上值。

说到了这里,问题来了,我可以申明哪些类型的变量呢?

java为我们提供了八种基础的变量类型。

分别是:byte, short , int ,long, float ,double ,boolean 和char

byte是一个字节,一个字节是8个二进制位,存储数据的话范围就是-128~127。只在一些特殊场景会用到,比如嵌入式等系统当中,可以忽略不计。

short,int,long这三个表示的都是整数,从使用方式上而言没有任何区别。唯一的不同是因为它们的二进制长度不同,而表示的范围不同。有兴趣的可以了解一下二进制的计数方法,总之其中short的范围是-32768~32767,int的范围大约是正负21亿,long的范围能到9*10^18。

这三个字段本质是一样的,一般场景下int就足够用了,如果预估数值会超过21亿,那么就使用long。现在计算机的内存也非常充裕,完全没有必要为了节省内存空间使用short。

同样,float和double都是表示浮点数,也就是小数。这两者的区别也是经度不同。float有32位,double有64位,所以,double可以表示数值更大,小数位数更多的小数。所以,一般场景当中我们都是使用double。

boolean,布尔型。很多初学者对这个类型比较陌生,听名字也很拗口。其实布尔型只有两个值,一个是true,一个是false,用来表示逻辑上的真和假。

char,存储一个单个的字符。可以是字母,也可以是数字,任何可以输出的符号都可以作为字符。用单引号分隔,比如’a’, ‘0’, ‘$’。但也有一些特殊符号,比如换行’\n’, 制表符(tab)是’\t’。

我们发现反斜杠是一个标记,可以用来组合生成特殊符号。那我们如果我们要输出反斜杠该怎么办?答案是’\\’使用两个反斜杠。第一个反斜杠的意思是取义,也就是取消第二个反斜杠的特殊含义。

其实大家可以发现,这些变量在计算机底层的存储都是一样的,都是存储成内存里的若干个字节,也就是若干个二进制位。既然存储格式都是一样的,那么自然可以想到,这些变量是可以互相转化的。