00:00
好的,那打开我们的课件,我们还接着上次课的内容继续讲。上一次课呢,我们讲到了数值的转换这个章节,就这就是类型的转换,注意听啊,我现在讲的只是是值类型的转换,换一次就是讲的是any value这一块的转换。那么关于N,呃,Refer的转换,我们后面再说,我们先说一下,当SC程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个呢叫自动类型转换,又叫影视转换。这一点在Java里边呢,也是有的,同学们在学Java的时候,老师也讲过,像这种自动类型的转换,对不对,那么这个自动类型转换呢,基本上和Java是一样的。它是按什么来做的呢?是数据类型按照精度大小排序是这样子的。
01:04
这样子大家看这个图好,既然有这个图了,过后呢,我们直接就来演示几个案例。演示几个案例,比如说我这里有一个叉。有一个char。这个差呢,我可以直接给一个int,其根本原因就是相当于把低精度的就是这个差。给一个int,这是可以的,其实这边其实就是char给int。对吧,那换言之,你看这个80为什么可以给double呢?就是int给double,好这个呢案例就非常简单,那么下面呢,我们来看看他的一些转换细节,聊两句。有这么几个细节需要同学们再确认一下。就是。有多种数据类型进行混合运算的时候,系统首先自动将所有数据类型转成容量最大的那个数据类型计算。这是第一个,比如说呃,我们我们把一个这个我们可以举个例子。
02:06
好,我们举几个例子啊。然后呢,我把这个先打开。比如现在我们有这么一个案例,比如说5.6加上一个十,最后这个结果呢,它就会自动转成这个double类型。它会成为一个double类型,我们看一下这个案例是不是这样子的。好,启动一下。这是第一个细节,第二个细节我们接着说吧,它还没启动起来,当我们把精度大的数据类型复制给精度小的类型时,就会报错。呃,就是它不能把大变成自动转成小,这个如果你一定要这么做的话呢,就要写比试的函数才可以了,所以这个地方是它不会自动转换啊,注意听不会。不会自动转换,就是大的给小的就会报错。那么如果给小的给大的呢,可以自动转换,我们来举几个例子好,现在呢,我们在这里面再新建一个包啊,再新建一个包叫数据类型转换。
03:12
新建一个包。走一个,那就是CHAPTER02。点我们的data converse。Convert,好的,我们就写到这里啊,Data数据转换。那我现在写第一案例。我们写第一个案例啊,DEMO0一来一个class object,我们写这写这么几个案例。好。呃,我们来写这样几个案例,第一个案例就是刚才这个案例,我就不举了。多个数据类型混合运算,我们看这个结果是什么样子的啊,首先你看我给个N1。N等于,比如说是个十。N2是一个1.1好的,那么V。
04:03
N3,我用这个N1加上这个N2,同学们可以看一下,当我这样加完以后呢,我们看这个N3的类型已经变成了double,就说因为你这个N2呢,它是一个double类型的。好,那么我们可以这样再来看一个,比如说我这加个F。如果我给N2加了一个F,那么我们可以看到N3的类型呢,其实就是个float类型的,好,这点大家要很清晰的知道啊,那么这里面我们就总结了这么一句话,这句话我就不直接拿过来。给大家写到这里来,什么呢?就是这样子的。OK。它会自动的转换成高精度,第一个我们说完了,第一个我们说完了,第二个呢,我们再来看下一个小案例。下一个小案例呢,就是呃,你不能把大的给小的,就会报错。啊,就会报错,这个我就不举例了,第三一个bit short和char之间不会自动转换。
05:06
就他们之间是不会自动转换的,你比如说你把一个bit给char,就是要报错的,我们举个例子,比如就是我们写到就是bit。还有shout。和差之间之间不会他们之间。对,他们之间不会这个自动自动的转换,数据转换这个类型。那比如说我举个例子啊,比如说N4。N4,他给他一个类型叫BAT。给他一个几呢,给他一个十,这个是OK的,然后呢,我要这么做,比如说我一个差。一。啊,差一我的类型也是差,然后呢,我要把这个N4给他大家看一下,这个时候就会报错。啊,就会报错,理论上说你是一个死给给China也应该没错,但是呢,它不会自动转换。
06:05
他不会这动啊,如果你一定要做的话,你得你得这样子转转换才可以说我明确的把它转一个差,这样就没问题,说它自动转换是没有的了啊,我写到这一栏这就是错了,因为因为这个BY。But,不能不能自动转成,转成这个差,好这个呢,我就写到这里。好,我们再来看第呃第四一个细节,Bit short char3者可以进行这个计算,那么在计算的时候呢,首先会转成一个int来,同学们,我们看这几个案例,我把这个放大一点。好,我就直接说啊,大家看这句话能不能成功,就是把十给一个败,可不可以可以。第二个把90给差是不是也可以好,请问B加C交给这个short可不可以,这个就错了,因为B加,但有些同学说说老师你这个B加C不是也可以啊,因为你B加C这个精度它加起来。
07:11
那谁的精度高呢?Bit和char,理论上来说,这个差的精度是不是要高一点呢?因为它的字节数多嘛,那也就是说你把这个char,你把这个char给SH不行呢,所以说这个就会告诉我,其实这种事我问大家他这个错误是什么错误,他会他会是说不能把char给SH,还是说不能把int给short。对,他是报的错,是不能把int给short啊,注意听这样好,我们再看这个行不行,成不通,十加90交给short行不行。有人说可以可以吗,这个。这个也是错的啊,同学们这个也是错的啊,十加上90是不是它是一个特类型的呀,因为它参与运算了,运算就会有数据类型,所以说这个地方就会报一个错,他仍然报的是int,不能给short。
08:04
好,这个呢,可不可以把100直接给12,这个是OK的。这个是OK的,好,同学们这边一定要清晰知道好这个第四个题我们说到这儿。好,那自动提升原则就是表达式结果的类型自动提升为操作数中最大的类型,好这个呢,我就不再多说了啊,这个尤其是这个地方要一定要小心,刚才有同学说这个还可以,就是错的啊,一定要注意他们之间不能转换,好同学们,我把这个呢给大家简单的板述一下。值类型的转换。OK。我们尽量的把这个一步到位,就说现在大家听起来感觉有点啰嗦,以后呢,你一步到位以后,以后大家就不用再为这个基本语法再去浪费时间了。对吧,因为你以后参加工作以后,你再拿一本书,拿一本什么书呢?撕开了快速入门,你好意思在这看吗。对吧,我看一个你可以看点其他的,比如说开了什么性能优化呀,什么你这写一个开了快速入门,老板看了心里面很慌张啊,对不对,这这是怎么回事,还在看快速入门,那你你也不好意思在这看了,对不对,所以说咱们就把这个语法就一次性给他过了,完了以后呢,大家就不用再用语法而担心了。
09:20
好的,所以说我这呢讲的尽量就是说能够给他说清楚的细节地方说清楚,给你聊了就一步就就要整完就完了。好,这是第一个介绍,呃,容量的一个排序,OK,好,这是刚才说的这个东西。好,然后呢,我在这后面这个幻灯片我又给大家,诶这个图我要拉过来啊,这个图还是比较重要的排序它是什么呢?它是这样一个顺序。大家看这个线要很清晰的知道它本身,这个虚线就代表一种影视的自动转换的一个流程,大家从这里再注意一下char。
10:02
和SH和,就说SH和这个之间,他们没有任何的关联关系。它们是没有关系的,因此我们刚才讲过SH和bit呢,他们跟SH跟char没关系,但是注意啊,Bit是可以转成SH啊,我刚才讲的是short bitt跟char没有自动转换的关系,我没有说bit和short没有转换关系,我没有说这句话啊,注意这条线是有的。啊,只是他们两个跟char没有,没有自动转换,千万要注意这个细节,有些同学听了听了半截子就跑了啊,他以为是韩老师说的是bit short差三者不能转换,我没有说这样的话啊,没有说这样的话,OK,好,紧接着呢,我们这讲了他的影视转换的几个小案例,那这块呢,同学们啊,老师就把它板书一下就O了。好,刚才讲的是影视转换的小案例。来给他数一下。第一个讲了一个案例演示。
11:03
对,然后自动类型,自动类型转换呢,我这里总结了这么几点,第一点对吧。第二点。呃,第三点。第四点。第四点就是他们在进行运算的时候会自动转成int啊。当然这样讲了,可能同学们有点糊涂了,说老师,我有一点不太明白。就是第四一句话呢,容易跟第一句话造成一定的冲突感觉,因为我在第一句话我说了,当有多种数据类型混合运算时,系统先将所有数据转换的容量大的,那理论理论上老师那就不对啊,你BAT跟short相加,那short的精度高,理论上说它就应该转成short才对呀。但是这呢,就是说大家注意一下,就是说。对,你可以把这个当做一个特例来对待就行了。啊,你不要说诶老师,你的老师讲的这里有点冲突,你把它当作是一的一个特例就可以了,就说我们可以认为它运算的最低的精度适应特。
12:08
这点大家知道啊,知道不要跟一和四混在一起,在这想不通,好,我把这个案例呢,也给同学们写到这里啊,代码。案例演示,我们一次性的把它过了。啊,刚才呢,老师写的这个案例呢,已经写清楚了,我就直接粘贴复制到咱们的。笔记中去插入一个小表格。好了,同学们,那关于我们这个值类型的影视转换这一块,我们就说到这儿。
我来说两句