闲聊Java编程入门四:常用类型


基于Java 8

类型是什么,从哪里来的

从这节开始,我们就正式进入编程语言的学习了。

我先提个问题考一下大家:

1 + 1 = ?

这个非常简单,在计算正确的情况下,不出意外应该是等于2.幼儿园的小朋友在没看过那个小品的情况下,基本都能算对。

那么,请问:

A + B = ?

也许是AB?或者BA?或者123吗?

可以说,没有人知道等于什么。英文字母不能做加法计算,所以没有结果,这是常识。

人类世界的常识在计算机世界也是有效的。人类都不知道等于什么,计算机这个榆木脑袋更不可能知道了。

不同的东西运算规则不一样,为了区分什么样的内容能做运算,我们就有了类型这个概念。

123321,这种,我们叫做数字的,可以做加减乘除等各种数学运算。

A,B,C,这种的,是字母,不能做加减乘除等数学运算。

我们人类的数字,在计算机中,叫做整数类型,简称整型。

小数类型对于计算机来说,比123这种整型要复杂一点,所以它有个单独的类型,叫做浮点类型。在有的编程语言中也不区分,整数和小数是同一种类型,但是Java是一种严谨的语言,它是区分的。

浮点这个名字很奇怪,词不达意。这是因为外国人先发明了计算机,他们有了优先命名权,这些奇怪的词语都是直接从英文翻译过来的,我们觉得不能理解很正常的,只要知道它表示小数就可以了,不用深究,这种词语还有很多。

那么字母这些,也有一个类型,叫做字符类型。这个好理解吧?

现在我们有了理论支持,我们就知道了,什么能计算,什么不能计算。
我们给计算机定义好了这些规则,计算机就可以按照规则,计算我们给出的算式。

实践一下整型计算

我们在网页中打开运行代码的网站,我们以后以w3cschool这个网站为例。

打开之后,可以在黑框中看到如下代码:

public class Main {
	public static void main(String[] args) {
		System.out.println("Hello, World!");
	}
}

有很多内容,我们目前还没有学习,没有关系,学习的初级阶段就是照猫画虎。

其实我们关注的重点就是这一句代码而已:

System.out.println("Hello, World!");

这句代码的意思就是,把Hello, World!显示在屏幕上。

那么我现在想让计算机帮我计算一下1+1这个难题。应该如何写呢?
其他的地方不要动,我们修改下括号里面的内容,照猫画虎如下:

System.out.println(1 + 1);

请大家注意:必须一个字不差的跟上面一样,因为计算机是个榆木脑袋,任何一次字母或者符号错了,它就不认识了。

1 + 1 这个算式,为了美观,我在+号的两边添加了空格,当然你也可以这么写 1+1

写完之后,点击运行代码,看看结果是什么。

结果是2,如果你跟我一样,那么你的第一个程序就运行成功了,恭喜。

你可以改成其他的试试,比如123 + 321 或者 321 - 100
看看计算结果对不对。

字符类型

在上面我们已经试过整型的计算了。

那么,字符如何操作呢?

我们讨论过了,字符是跟数字不一样的类型,计算机这个榆木脑袋,是区分不出来A 和 1的明显差别的,如果你直接写一个A给计算机,它会报告一个错误给你,不认识A这个符号。。。。。。

唔。。。。。。这是个问题,假如你是当年发明计算机的科学家,你如何解决呢?

最好是跟数字的书写方法不一样,计算机就能认识了。

于是,他们发明了字符的书写方法。很简单,用单引号来包裹住字符就可以了。

像这样:

'A'

这么写,计算机就能认识了,哦。。用单引号来裹住的,是个字符。

实践一下字符类型

同样的,我们在网页中修改代码,照猫画虎如下:

System.out.println('A');

然后运行一下代码看看,如果你看到显示了A,那么就是成功了。计算机认识我们输入的A,并且给我们显示了出来。

如果你的没有成功显示A,那么检查一下是否跟上面一样。

初学者常犯的错误就是,忘记了区分中文和英文的逗号引号分号。因为计算机是外国人发明的,所以他们都是用的英文的符号,不是中文的。

逗号和引号在中文输入法和英文输入法中,是不一样的。

我在上面用的单引号是',而不是中文的单引号,这两个符号是有细微区别的,中文的有一点倾斜。

英文的逗号是, 中文的逗号是这两个比较难区分,中文的要精致一些,英文的就是个小撇。

英文的分号是;,中文的分号是,也不太一样,中文的要小一些。

所以在写代码的时候,我们都是直接切换到英文输入法。

目前在没有在专用的编辑器中写代码,只能靠大家自己的眼力了,后面我们会使用专业的编辑器,它们可以提示我们符号写错了。

如果你实在分不清单引号,那也没有关系,字符类型其实我们平时用的很少。但是逗号和分号是用的很多的。

多个字符

单个字符的我们已经学会了,单引号表示。我现在不想用字符了,我要写单词,我要写个Love

应该怎么表示?

'Love'这样写吗?

这种写法在有些编程语言中是可以的,但是!Java是个严谨的编程语言,单个字符跟多个字符还是有差别的嘛。

那么,多个字符就用双引号好了,顺理成章吧?

多个字符组成一个串,名字就叫字符串好了。我们就有了字符串类型,用来表示多个字符。

像这样:

"Love"

同样的道理,我想显示一句话:I Love You !

就这样:


"I Love You !"

我们已经跟计算机约定好,双引号包裹住的内容,是文字内容,我们可以写一句话,或者一封表白信。

但是也有个问题,左右两个双引号只能在同一行,计算机才能认为两个双引号是一对的,真是有点榆木脑袋。

像这样是不行的:

"I Love 
You !"

这样就是左右两个双引号不在同一行中,计算机会不认识。

实践一下字符串类型

像这样照猫画虎改一下:

System.out.println("I Love You !");

运行一下,是不是显示出来了呢?

如果没有,再检查一下是否一样,有没有忘了使用英文的引号。

显示中文也是可以的

System.out.println("我爱你!");

我们似乎还忘了一种简单的计算

小学课程里,除了加减乘除,好像还有大于和小于的比较。
如果我在代码里输入如下的代码,会显示什么呢?

System.out.println(3 > 2);

3 > 2,说了一句大实话。请执行一下看看。

我的计算机告诉我,结果是true。如果你跟我一样,那么我们就发现了一个新大陆。

那么如果是这样呢?

System.out.println(3 < 2);

这时候计算机告诉我,结果是false

我们知道,在英文中,true的意思是符合事实的,真实的,真的。 false的意思是假的,错误的。

那么,我们在计算3 > 2的时候,计算机其实是想告诉我们,这是真的,正确的。3 < 2的时候,告诉我们,这是错误的,假的。

看来,计算机还能做一些比较大小的计算,可以告诉我们结果是不是正确的。如果是正确的,就告诉我们true,错误的就告诉我们false

那么,我们推断,肯定计算机是认识truefalse两个词的。

是的,这两个词也是对应一个类型的,叫做布尔类型,英文是boolean。这个类型仅有这两个值,对计算机来说,不是对的,就是错的,它是榆木脑袋,理解不了其他的。又是一个奇怪的名字,不要深究,因为我干了这么多年,到现在也不知道为什么,只知道是英文翻译来的。

实验

之前我们在上面说,A和B是不能相加的,除非我们约定一种计算规则。
请自己尝试一下,我们是否跟计算机有关于字符相加的约定规则,计算结果是什么呢?

System.out.println('A' + 'B');

如果是小写的a和b呢?

System.out.println('a' + 'b');

再如果是字符串呢?能相加吗?

试一试看:

System.out.println("hello" + "Java");

如果是减法呢?

System.out.println('A' - 'B');

如果我们比较两个字母的大小呢?

System.out.println('A' > 'B');

请大家尝试一下。


文章作者: 枫山别院
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 枫山别院 !
  目录