00:04
计算机这个词的本意啊,无论在中文还是英文。它指的都是做计算的机器。因为在40年代计算机刚出来的时候确实如此。他是帮数学家算题目的。可是发展到现在,计算机已经远远脱离了原本计算机这三个字的含义。计算机更多的主要的是一种信息处理的机器。而信息处理主要要处理的不是数字。而是文本。所以现代的编程语言对文本的支持都很好。Java当然也很好,Java可以很好的做和文本相关的一些事情。我们之前知道说,在Java当中,我们有两种表达数字的类型,一种是表达整数的,一种是表达浮点数的。今天我们要来学习两种新的类型,先来看第一种。
01:01
单个的字符。这种类型只能表达一个字符。它的类型的名字呢,叫做R,这是character啊,英文character的前四个字母。那么如果我们有一个。Char类型的这个变量,我们就可以用它来记录,或者是用它来表达单个的字符,我们来看一下,如果我们程序里面有一个R的变量C,那我们就可以让它等于呢,比方说AA是用单引号括起来的啊。这样的一个字面量,我们叫做一个字符的字面量,那么在里面呢,你可以放一个字符,但现在我们放了一个A以后,这个c char类型的变量有了一个值以后呢,我们同样的可以用system out print line来把这个C做一个输出,我们来看一下这个程序运行的结果呢。我们就得到了这个A啊,这很简单啊,大家都想得到,这里面呢,可以是字母,可以是数字,也可以是汉字。
02:06
啊,单个汉字也是Java的一个字符,因为Java呢用的是unicode编码,而unicode编码呢,可以支持很多的文字啊,当中当然也包括汉字,还包括一些其他的啊,各种民族的文字,那么那么这个字符类型呢,除了我们刚才演示的啊,你可以给它附一个值啊,附一个字面量的值,然后呢,可以把它输出以外呢,我们还可以做很多事情啊。他可以做一些运算。呃,他可以。做一些这个四则运算当中的加法和减法运算,当然乘法和除法对他来说没什么大的意思啊,但加法和减法是有意思的,我们先来看一下这个这个屏幕上的这些代码啊,会有什么样的效果。我们的这个C呢,一开始是等于A的,然后呢,我们做了一个C加加,我们知道C加加做的事情是让C加一,对于整数浮点数,对于数字,我们能够理解加一嘛,那就是数值加一了,对不对,但是对于一个字符来说,加一是什么意思呢?我们看如果我们来运行它一下。
03:08
我们得到了B。也就是说加一就使得它成为A后面的那个字母啊,排在A后面的那个字母,那如果对于中文会怎么样,比如说我们这说我们有一个叫做汉的那个字,然后呢,我们也让他加一。它出现的呢,是在unicode那个码表里面,因为Java是用unicode编码的,那么unicode的编码呢,呃,它不是像这个我们在中文当中,传统可能会习惯用,比如说用拼音来做排序啊,它有它的另外一套排序的方式,那么在这个地方呢,如果我们拿汉这个字去加一,它出现的是出现在排在unicode表里面汉后面的那个字啊,所以你对他去做加一,总是得到排在那个unicode表里面的后面的那个字。如果现在是这样。我们有两个啊,还有另外一个字符,比如说叫D,它呢是等于大写的D啊,然后我们让C这个变量呢,是等于大写的A,接着呢,我们不去做加加这个事情了哈,我们呢,来算一下说D减C的值是多少,也就是说一个是字母D,一个是字母A,他们减一减它们的这个差值是什么呢?
04:20
这个只是三,三是A和D之间的距离,Abcd嘛,D是第四个字母,A是第一个字母,所以它们之间的距离就是三。事实上呢,我们还可以做这样的事情,如果我们想要把这个C呢类型转换成int,它没有报错嘛,说明这件事情它是可以做的,对不对?我们得到了65。65就是C这个啊,就是C这个变量里面那个A那个字母在unicode当中它的一个编码值。啊,在这个差类型和整数类型之间,我们是可以做换算的,我们也可以拿一个差类型的变量去做加法,去做减法啊,把它当做好像一个整数类型的这个一个值来做计算一样,因为呢,在unicode里面,事实上我们是用一个数字来代表一个字母或者一个汉字的啊,或者一个呃,其他语言的这种字符啊,所以呢,它可以从中得到相应的那个字符的那个编码啊。
05:23
通过把它转换成整数就可以得到它,实际上我们还可以再试一个事情啊,我们在这个单引号里头呢,你是不能放两个字母的,比如说我放了as这两个字母对不对,那它立刻就不对了,他说呢,这个啊,这是无效的字符的字面量,无效的字符的常数只能放一个,如果呢,我放的是这样的东西。然后我们去把这个C给它输出出来,首先这里我们看到它没有错哈,没有没有没有抱怨,没有说我有问题,所以呢,反斜杠U0041的是意思呢,是说我现在呢,这个0041是一个16进制的数,这个16进制的数是一个unicode编码啊,前面的反斜杠零反斜杠U表明这是个unicode编码,所以呢,这是整个代表起来,这其实只是一个字符,是哪个字符呢?
06:13
我们来运行一下。这就是那个A。因为16进制的四一就是十进制的65 65呢,我们刚才已经看过,就是A的那个unicode编码对吧?所以我们用同样的方式在告诉编译器说,你看我现在其实需要的就是那个A,但实际上编译器肯定会在程序里头帮我替换成那个A啊,然后再交给那个C。当然这事也不用做的这么费劲啊,其实我们直接如果说C等于65也OK的啦,然后呢。跑一下就是A啊,也就是说。这个字符类型和整数之间啊,我们是可以做一些转换啊,做一些互相的赋值的,那接下来再来看一个事情,我们从刚才的一些演示当中大概可以知道说这个字母在unicode当中它是按照次序排列的啊,啊我可以先告诉大家一个事实,就是字母和数字呢,是按照顺序排列的,比如说数字从零到九就是这么排的,那字母呢,从A到Z也是这么排的,但是呢,大写和小写它是不连续的啊,不是连在一起的,所以大写的A到大写的Z在一块儿,小写的A到小写的Z在一块儿,那么问题来了,我们要怎么样能够。
07:24
写程序去做大写字母和小写字母之间的换算。比如说如果我已经有了一个C,里面放的是小写的A,我怎么能够把它换成大写的A呢?我们需要这样做,现在在我们C里面就是大写的A,我们想要把这个大写的A呢,换成小写的A放到D里面去,所以呢,我们可以这样做,说我们让C呢,加上A和大写A之间的那个距离。但这个整数的值呢,我们需要把它换算成一个字符啊,因为。在这里面做完这些运算以后啊,你拿一个字符去做了加法减法运算以后,它的结果就已经不再是字符了,它的它的结果呢就已经是整数了,所以呢,我们需要再把它换算成字符啊,在这里我们做的事情就是我们去计算了小写字母和大写字母字母之间的距离,然后呢,这个距离加到我们的这个现有的这个大写字母上面去,就可以把这个字大写字母呢换成小写字母,然后呢,我们来输出这个D啊,我们来看一下这个运行的结果。
08:27
这就小写的A了,那如果反过来说,我现在这是一个小写的A,我要换成大写的A,怎么怎么做呢?小写换大写呢,无非是这个地方换一换啊,我们要做的是大写的A和小写的A之间的距离,让这个C这个字母来加上,现在我们来看一下运行的结果呢,它就变成大写的A了,那么这些字符呢?呃,既然它都是unicode来表达的啊,每一个字符其实背后都带着一个unicode的编码的值,所以它们是可以比较大小的。我们可以拿两个字符来,然后呢,判断他们谁大谁小,我们来试一下看这件事情。
09:01
我们可以简单的就在这儿做哈,说A大于B这个事情是不是成立的呢?然后他说force,对啊,因为。虽然我们列这个字母表排列A在前面,B在后面对吧,但是呢,因为A在前面,所以它的编码值就会比较小嘛,它判断的是编码值的大小,所以B就会更大一些,那小写的A和大写的A是不是小写的A会更大一点呢?我们之前没管到底谁更大对不对,我们现在可以来看一下,他说呢,这是true。小写的A排在大写的A的后面,那我们可以再试一下,如果有个汉字的,看它和大写的A之间谁大谁小呢?这是true汉字比所有的西文字母都要来得大啊,所以这些大小都是可以做比较的。
我来说两句