00:00
好,那刚才呢,我们讲到这个变量的一个使用啊,没有屏幕好稍等。哎,好的。好。广播一下。好的,呃,现在我们接着往下说,那变量使用的第五个需要同学们注意的地方就是这里VAR修饰的对象引用啊,如果你呃用VR去修饰一个对对象呢?呃,这个就可以改变的,VR修饰的则不可以改变,刚才已经讲过了,这就不再多说,好变量声明时需要进行初始化,这一点请同学们注意一下啊,比如说同学们可以看到。当我在这里给他定一个。变量的时候,比如说我这里定一个number,那么这个时候同学们看必须给它一个初始值。
01:04
你看这写的很清楚,你没有初始值的话,呃,他就要报错,不像Java Java有些时候Java那个属性里边啊,你不给他一个初始值,它会有默认值,但是这个你必须要给他一个明确指定一个值,但这个值也可以是默认值。但是你必须要写,你不能说什么,后面不写这是不行的,大家注意一下就可以了,那这样写就是要报错的,好,我把这两点呢也给同学们拿过来。好,放在我们的笔记里面去,刚才讲的第五个和第六个。好,我们干脆把这个放到这儿吧。第五个和第六个啊,这是第五点。好,这是我们的第六题。好了,可以了。好,接着我们往下继续学习程序中加号的使用,加号使用了,我这里就不去做笔记了,我就念一下就行了。
02:00
如果我们两边都是数值呢?就是做加法运算。当左右两边有一方为字符串,则做拼接运算。这点在Java里面是。一样的,所以说我这里呢,就把它总结到这里就过了啊,不再举例。因为这个并不难。好,我把它呢给它整理到这,诶这个有点问题,往下来一下。给他来一个标题二对。那这里呢,我这儿总结了这么两句话。大家要有一个印象。就为什么要把点出来,就是因为同学们毕竟就是这个看是一门新的语言嘛,我明确告诉你,大家就不会有疑惑了,就就是这样子的,就不会再产生什么疑惑。好,紧接着我们继续往下看,下一个话题就是数据类型,这个是个重点。嗯,虽然说JASC它这个跟Java它是都是基于这个Java mg的,但是我告诉大家,它它的数据类型变化还是非常大的。
03:04
所以说还是得把数据类型给大家说一说啊,有些有些地方呢,就讲的特别简,就直接告诉你跟Java一样,其实不一样,变化还是比较大,所以我觉得有必要跟他说一说,首先我们看开和Java呢,有相同的数据类型,这是肯定的。死开了。注意看啊,有相同的数据类型也有不同的。也有不同的,在开中数据类型都是对象,也就是说在开中没有Java的原生类型没有了,包括它的整形、浮点型、布尔值都是对象。都是对象。好,这一点呢,请大家注意第一个话题啊,第二个话题scale数据类型中分两大类,一类叫any value,也叫值类型,还有一类叫any,这叫引用类型。注意不管是any value还是any refer都是对象,那这个时候呢,老师就要给大家做一些这个演示的案例了,那么我新建一个包来讲解。
04:15
好,我们还,我们现在是第二张,第二张呢,诶,对了,我们第二张应该新建一个包才对啊,刚才有个问题没有新建包新建。Come,点艾。At归。古典CHAPTER02。对。好,这个就是看这里面有两个包啦,一个是菜面零一,一个是菜零二,那么现在呢,我们来说一下刚才的这个话题,什么话题呢?就是呃,数据类型的事,我新建。新建一个包叫数据类型。注意近啊,新建一个包叫data type,我为什么把它给它分清楚呢?就是以后同学们看起来就比较清晰了。
05:01
啊,比较清晰了,好,这是零二下面有个data type,我新建一个类啊,叫做呃,Type。Type demo01。老规矩,Object。啊,举例。好,我们来看第一个案例,就是在撕开了中,数据类型都是对象,这个怎么理解呢?比如我给大家举一个最简单例子,VR,看看清楚了啊,我这有个NUMBER1,我给它一个int等于十。看这个地方它是一个类型。这个int类型呢,你看它是。I大写的,那么我们可以来追一下。你看一下同学们是不是一个class呀。诶,你看Java里面它可不是一个克拉斯啊,它可不是一个克拉斯,它就它这一面,它就是一个拉斯,所以这点大家要清楚,那么同学们既然它是一个class,是不是它就有大量的帮法,你看我就随便来证明一下,因为它是。
06:05
一个类,因为int是一个类。因此他的一个实力。就有就可以使用,就可以使用很多的方法。很多的方法,这一点不得不说是开了,设计的比较好,他对竖形的转换啊,特别简洁。你们在学这个电信项目的时候,我相信如果涉及到一些比较复杂的数据类型转换的时候还是比较麻烦,但是他这变得非常之简单,怎么简单呢?你看啊。Number 1.two,一堆two,你看到没有?To string To Bed to chart to double to了。你就你想转什么你就转呗,看到没有多简单多easy,但你要说你你要说是那个Java肯定要什么intaker这part什么玩意儿是吧,还得转过来,还得转过去。
07:02
你看它这个就简单很多,你看比如说我要把它转成一个double类型,这就转了。比如说我要把它转成一个字符串,点图,这就转了。而且大家看说老师你这个我有点看不懂了,这为什么他们写小括号呢。我在这本身是以你看这写上他,他还给你报错看没有,如果我们这个参数啊,我都我这本身是以后一样的,我这多说一句,因为刚好用到了在这个scale里面,如果它的一个方法没有,没有这个行参可以省略到这个小括号,举个例子。我这补一补啊。如在是看中。在scanner中。如果一个方法没有行参,没有行参则可以省略,省略括号。举个例子,比如说我在这里写一个c hi。谁害?Print。
08:01
Print。啊,就说hi c hi这个我相信同学们大致也能看得懂,因为我在上午的时候呢,简单说了一下一个方法的结构,看这个是不是关键字讲过吧,这个是他的一个方法名,这个是不是就是它的行参的一个,呃,就就行参里面调到这里面的是吧,没有这个是代表他返回字为空啊,诶这这个你看我这样调用也是可以的看。Say hi。我把这个去掉没问题啊,两两种方式都可以啊,都可以。你看这两个都可以,我们执行一下朋友们。我们执行一下,你看no problem。是吧,C hi c hi,这个地方也给你转成了一个,呃,Double,因为我这没有空,把它打一个空格吧,写杠T再看一下。你看。所以你们可以通过这个小案例呢,能够体会到SC的一个语法的特点就是灵活和高效,他是觉得尽量把这些这些同学们在业务上的东西尽量给你们缩减到,其实这些都是都不难撕开了,最难的地方就是在用它做一些算法设计。
09:10
那个地方就难了。啊,比如说后面我们写一个大数据,你们学哈杜的时候,肯定有个经典的案例,什么案例呢?就是给你一篇文章,然后统计这个单词有多少个,然后在排序,是不是你们当时是用Java写的,还是什么语言写的,你看这是Java写的,是不是写了好多行代码啊,告诉大家是开了,一句话搞定。嗯,说老师一句话搞定真的吗?真的一句话搞定,而且还很简单,还很好理解,但但是现在我们还没没没办法讲到那,因为那个讲到那呢,他有集合才能用,确实是一句话就搞定。如果你用假瓦写,我估计少说20行吧,得要。但是SC一句话就把这个你统计单词的事给你搞定,而且他还可以并行计算,你说气人不气人对吧?那没办法,他是后发制人嘛,别人是先走到前面的,他优化肯定是要相对容易一点。好了,我们不管怎么样,通过这个案例呢,我们体会到这么一句话,在开中数据类型均为对象。
10:10
我不管你是什么啊,通通是对象。再说一遍,斯开了是纯的,很正很纯的一种面向对象,在他这里面一切均为对象,即使你是这种int呀,Float呀,Double呀,甚至连布类型都是对象。你比如说我再举一个例子。你pass,甚至这样子啊,甚至可以这样用,你都想想不到这样写的,比如说我这一个十年。他连这个地方都能用。这是一个数字吧,常量,他认为你是个对象,看到没有一样可以用的,没没毛病,没毛病可以用。啊,那他就一切都是对象,那么呃,像我们的布尔类型呢,也可以啊,我再举个例子,这个举完我就走下一个了啊,比如说我给他一个处。注注意这个地方我用了类型推导,大家看这里啊,如果我们这个地方有一个波浪号,往往代表你没有用啊,没有用,像这种语法很多语言里面只要你给你给他赋了值,没有用,有些语言里面直接给你报一个错误,有些么直接是差了。
11:18
你们有机会学go语言,就知道构语言,你这样一写,他直接给你说就是错的,为什么没有用啊,但是这地方还没有到那个,没有到那个地步啊,看is pass.to它有一堆这个方法,全是方法啊。你看这些方法你们看起来很奇怪的,但是你看久了过后觉得他特别可爱啊,现在你看看着他很不好理解,好,你看我再执行一下。好了,案例,那我们就说到这了,就是关于关于他的这第一句话的理解,案例我就说到这第二句话来了,开了的数据类型分两大类,哪两大类呢?Any value和any refer,我给大家看一张图。
12:00
好,同学们请看这张图,这张图你仔细一看。其实并不是很难啊,待会我再总结几句话,第一个我们可以看到。他有一个。跟类型。叫any,提这个名字叫any,就是任何的意思嘛,它是所有有类型的这个父类,你可以认为它是一个根类型,它下面呢分了两大类,一大类是我们叫做。值类型n value就代表值类型,值类型,注意值类型也是对象啊,再说一遍,值类型也是对象值类型。这边是我们的引用类型,引用类型这个引用类型就有点类似于我们原先学的Java那种传统的对象那种类型啊,那么any它又分成三大类,一类是。撕开了里面的集合,撕开了里面这个集合,确实把集合用到极致了,他把集合用到极致,而且他对在Java基础上对这个集合进行扩展。
13:06
那么后面我们再说,现在先不扯那么多,还有一类就是以前这个传统的Java的类,这就是他把这个Java这条体系融入到他这里面了,看这个这个图就很清晰了,就是为什么刚才我们讲的是开了入了Java。他好像是化工大法一下,他把别人给画了,还有一类就是你自个自定义的一类,就是other scanner classes,你可以自定义。或者是不是这个集合里面的啊,反正呢,这都属于引用类型,这个就是我们传统的所谓的这个类,或者叫对象这个这个范畴。好,我们再来看这个实线表示什么,注意听啊,我待会还要总结实现代表一种继承的关系,叫sub态就继承。比如说你,你可以这样理解,你可以认为这个这个char,这个布尔类型就是n value的一个子类,同样你也可以认为像这个呃,Java或者SC,或者是呃,SC,别的类呢,就是any refer的一个子类,而any refer呢和any value呢,又是any的之类。
14:12
我们可以观察到这个地方有两个特,在卡里有两个特别的类型,一个是no,一个是nothing。这个呢,呃,在。词刊里面它有个专业的术语,叫底层类。叫八筒啊,底层类,待会我再写啊,叫底层类,这个是它的一个特色,它的特色这两个底层类有什么作用呢?呃,我估计现在说大家可能不是很理解,我先说一下看清楚啊,大家看到not是所有这个any refer之类。而这个nothing呢,是是所有类的子类,这有一个好处,什么好处呢?因为这个nothing是最底层的类,那么这个nothing呢,就可以这个这个数据就可以付给任何一个变量,或者是返回给任何一个函数使用。
15:06
那我说这句话,可能有些同学能听懂。如果Java学的比较清楚的,我们一般是这样子的嘛,像Java它的它推崇的是什么呢?向上就是我可以把一个。类型返回给object的,对吧,一般是这样做的,但是开设计者他觉得不行,我还得加强他干什么,他还想设计一个类型,这个类型。是所有类的子类,那就意味着我这个类型的数据是不是我想给谁就可以给谁了。诶,它也是它的一个特点。我可以给任何一个,我这个拉可以给BA,可以给char,可以给unit,可以给任何,是不是他又在这个基础做了一种扩展呢?诶这个慢慢你们就会领领会它的好处。那么有些同学说老师这个拉伸到底有什么好处呢?我就举一个例子,比如说抛异常这个事儿,食肉。大家都知道肉这个这个异常呢,一般来讲我们是往上层抛。
16:05
但是你在往上上抛的时候,你不知道将来这个接收这个异常的函数,它的类型是什么类型,是不是你不知道。那就有可能抛不上去。抛不上去,为什么呢?因为假如你接收的那个类型,它不是你这个异常的负类,你就抛不上去了,是不是?呃,可能有些东西能听懂,诶人家干什么呢,这个盖设计者他把这个这个异常就做成拉这个类型。啪啪啪,你怎么往上扔就行了,我不管那么多,诶他这块后面我们还会讲,异常的时候还会说,好了,这是关于它的一个继承的一个事宜,那么待会儿我还要总结啊,再看这条线。再条条线,这个线呢,叫implicit conver conversion,大家知道这个单词什么意思吗?这个叫隐视。隐式就是这个隐啊,隐藏的隐视就是这个公式的式,隐式转换,大家看隐视转换在哪里呢?在这条线。
17:06
哦,明白了,这就意味着我们的SC仍然遵循我们Java的一种向由低精度向高精度转换的一种规则,看清楚没有?这个这是自动隐私转换啊,后面我们还会学一种叫做呃,就是叫自定义隐私转换,那么从这个线我们发现大家有没有发现它的影视转换的这个规则。和Java是完全一样的,看到没有?老师,这个我都有点忘的差不多了,没关系啊,忘人忘记一个东西是一种本能的反应。对不对,因为比如说你借别人一块钱,你老忘不了,你这个人痛苦的不得了,是不是啊,你看这个人还借在十年前借了我一块钱,现在还没还。说人有遗忘是正常的,但是呢,如果刚学了就忘,那就是有问题了啊,那那就有问题,好,我把这个说完了,过后我们来,同学们,老师呢,给大家总结几句话来,我们总结几句,几几个几个词,第一句。
18:08
那干脆这样子啊,我把这个数据类型,把这一起给大家整理一下,然后再总总结几句话,总结几句话我们在这总结。我们现在总结,待会把它拿到我们笔记里面来啊,嗯,干脆这样子啊,这是数据类型啊,来干脆把这块一起板述一下数据类型来吧。数据类型,刚才老师总总结了这么几个,一个是数据类型,我整理了三句话,对三句话来把它给同学们阐述一下。第一点。第一点,对开了,一切皆为对象。一切皆为对象,这是它的一个核心句。标出来第二点,它有两大类,Any value和any。那么值类型就是你可以理解成值类型主要是我们的基本数据类型,但是注意不管是什么,都是它的一个,呃,都是它的子类啊,都是它的这个类型啊,往上走。
19:11
好。呃,还有这句话,第三句话,相对Java的类型系统。那么撕开了要更复杂一些。更复杂,但正是这些复杂多变的类型系统,才让我们面向对象和函数式编程完美的融合在一起,啊,这是,那么我这里呢,有案例。我把案例给同学们整理一下来,刚才我在这里写了这么一个数据类型案例,我把它先给同学们拿过来放到这。好的,放在哪个位置比较合理呢?放在这儿吧,那放在这儿啊,就干脆放到这地方也可以啊,问题不大。因为都是讲他的这个这个东西的。好,紧接着呢,我们再来看一下这个撕开了数据体系的一览图,快速的走一下。
20:03
Okay。好,快速的给大家走一下,一览图。给大来一个标题三,这个图呢,在这个位置我就不啰嗦了,把它拿过来,我们现在总总结一句话啊,好好写好了。现在呢,我们来对它做一个小结。啊,总结对,上面这个图的小结,对。对上面图的一个小结和整理。和整理这个呢,跟着老师思路啊,跟着老师思路这动一下,第一个我们来总结这么几句今年的话啊,第一点。嗯,在CA里面有一个有有一个这个根类型叫any,它是所有类型的这个负类。在SC中啊有。有一个根类型,这个根。跟内心安。N它是什么呢?它是所有类类啊类的这个负类。
21:07
啊,Play有点类似于像我们Java的object啊,你可以简单的理解啊,这是第一个,第二点呢,呃,Java这个分的,从它的类型呢,分成两大类,一个是any value,一个是any refer。啊啊。开了将,开了开了中,一切一切皆为对象。一切皆为皆为对象啊,即使是基本数据类型,你们认为的这个基本数据型在这就是指类型啊,一切皆为类型分为两大类,两大类哪两大类呢?一个叫any any这个value,这个呢,我们有术语叫值类型。啊,还有一大类呢,就是any啊any refer这个呢,也有一个专业术语,叫做引用类型对,引用类型对,那么它们都是啊,他们都是都是这个any的之类。
22:07
好,这个就没问题了,第三点我们再来看,在SC里面有两个特别的类,一个是no,一个是nothing,啊,这个no。是SCSC的比较特别的类型,这个在Java里面是没有的啊,没有的它是什么类型呢?就是no类型。让内心。那类型呢,它只有一个实例,它只有一个值啊,它只有一个值,什么值呢,就是这个值。就他没有别的,他就一个,他只能取闹。只是这个是小写的n nu,待会呢,我举个例子,你比如说打个比方啊,干脆我后面再说啊,大家先记住,就它只有一个值,这个闹类型只有一个子,就是就是空,它是什么呢?它是。它是一个BOT bottom class是什么呢?是呃,这个any referred是any refer的一个指令是。
23:11
啊,所有是所有any类型的之类,好,这是一点,还有一个nothing。N oh。Nothing这个类型呢,更是底层的类型,也是底层类,Bottm这个类啊,它是什么呢?它是所有所有类的之类,那它有什么好处呢?我们在开发中,在开发中,开发中,呃。开发中通常通常可以将这个拉伸类型。拉伸类型。类型的值返回给返回,返回给任意任意变量或者函数,因为它是任何一个类型的子类,那么任何变量都可以接受它,我不管你是什么类型,他都可以接受啊,它可以说这里在哪里用的懂呢?在抛出异常时用的很多,抛出异常用的很多。
24:15
异常使用很多,我给大家举个例子啊,很多。既然讲到这儿了,我就不啰嗦,我该举个例子,就以这个nothing举一个例子。嗯,来吧,举个例子,这个呢,我们就叫做类型的第二个案例,注意听讲。啊,我叫太婆DEMO02。OK,来,走一下例啊,朋友们,老规矩。那么现在呢?我写一个这样的东西,Class。比如说我这有个类叫做test类。TLY。那么这个test的太我写个方法吧,干脆就写到这了啊,写个写个方法DF,比如我这也写C哈。Say hello。
25:00
那么这个C哈呢,我就直接明确的说,我有个nothing类型,老师这种类型为什么要写这种类型呢?因为在有些情况下,我们就明确这个方法就是专门用来抛异常的。啊,比如说这个地方。比如说比如。这个比如在开发中,开发中我们有一个函数有一个呃,这个叫方法,方法就是它就会异常中断,就会就会异常的异常中断。异常异常中断,那这时。中断啊,中断这时就可以就可以返回,返回这个拉伸。返回拉伸,就说我用这个拉伸来表示这个函数,就是没有正常值返回。即。即,即什么意思,就是说当我们这个用拉做返回之时。
26:01
Nothing做返回值时就是明确的表示,就是明确说明该函数没有该方法啊,就要就叫方法,因为现在还是严谨一点,该方法没有正常的返回值,正常返回值。赵老师,这种需求有吗?还真是有可能,比如你们将来做大数据计算的时候,那么在某种情况下就一定会出错。那么你可以用这种抓这种异常的形式来加入到业务逻辑,同学们在学前面那个电商电信项目的时候,应该老师讲过,有些时候抛异常本身也可以作为一种业务逻辑,我不知道同学们用到这个特点没有,以前我在讲JAVA1的时候,我讲一个CM系统,就是用那个抛不同的异常来给他展现在这个客户告诉他是什么错误,比如说你的用户名、密码有问题。比如用户密码我抛一个这个抛一个异常,这个异常呢,我根据异常的类型来判断你是什么,诶他其实异常也可以参与这个逻辑判断,好,那么我抛一个。
27:08
我就入。输入一个六一个exception啊,比如说抛出异常。你看这就很OK啊,这个它就有一个用处,还有呢,这个从这里面大家也看到异常,其实就是拉这个类,那就意味着将来在开里面这个异常可以随便抛。我说老师,我这写一个是个空啊。你看,Your。有,你没毛病,看到没有,你甚至个空摊的抛出去。啊,这个它的特点,这个这个就是我们所说的scan,还是非常有特色特点的啊,来我们玩一把,那么我给他来看一个,我就把这个异常拿过来给它梳一下啊print。好,抛出一个。好,我们来执行一下。
28:01
抛出一个异常,我们来仔细一下。是不是这个异常我就拿到了呀,啊说老师你这个为什么我因为我没去,没去try catch,所以说他就会把这个异常抛出来,看到没有啊,就这么一个逻辑,我抓到这个抛出异常这个东西啊,它有这么一个特点,好,这是我们所说的这个,呃,第几个特点呢?就是这个特点啊,把这个案例给他拿过来。啊,把这个案例拿过来,这是我们所说的第五点啊,不要着急,我把这个呢给同学们板书过来。板书过来。好,各位同学,我们再来看第五个特点,第五个特点我们从这里可以看出来,在SC里面它这个。精度的自动转换和Java的机制是完全一样的,但是呢,它这里有个专业的术语叫什么叫做影视转换。啊,从上图可以看到,就是在SC中,SC中仍然遵守。仍然遵守啊遵守遵守什么呢?这个低精度低精度的,低精度的这个直向向高精度的值。
29:11
哎,向高高精度,高精度的指自动转换,自动转换这个术语我们叫什么呢?叫做licit conversion。啊,Conversion啊,这叫影视转换,影视转换。好的,同学们呢,也可以简单的来用一下,比如说我举个例子,同学们看代码。说我这里有一个number,这个number呢,呃,我先给他来一个这样类型,同学们看对不对哈,比如说我给他一个1.2。不开1.2没没问题哈,没问题,那现在呢,我做一个这样的动作,大家看对不对,我我再写一个这个东西。NUMBER2等于一。
30:03
点7F。好了,现在呢,我做一个动作是这样写的。我要把这个NUMBER2给他附一个number。错了。这方错了?哪个同学告诉我为什么错了?哪个同学能告诉我为什么错了?诶,这边看一下number类型是什么类型呢?Double类型,因为我刚才讲过了,数值默认为什么,哎默认默认为double类型,你把一个double交给一个float,这个类型是不是float类型呢。这是这是。这是一个float类型。那你想想,你把他给他,他能报错吗?他必须报错吗?你这样就错了,诶这样就,那么我问大家,你们有解决方案吗。是不是刚才老师讲过,他们内心的转换是很轻松的一件事情呢?其实very的easy to,什么double完事,诶,这个double还报错了是吗?
31:10
不不不,不是to double,不是double。To float是吧?啊,因为你这边是float,我给你转成float嘛啊,这样就可以解决了啊好同学们这样解决方法呢,我也说到这里。好以后大家这个要要。要能看懂啊。别到时看不懂就麻烦了。修改。吃这个好。这个是错的,好,这个错的我把它写到这儿。好,那么现在呢,我们把这个就做了一个第二个说明,我把这个代码呢,也给同学们拿过来。在哪里呢?在这儿。就遵守他的这个影视转换的规则,我们说到这儿欧了。好,我看看还需要什么整理啊。Bottom nothing空,我都说了啊,我都说了,OK,大体先说到这吧,大先说到这好,那关于我们这个数据类型的,呃,这个一览图呢,大家要有一个基本认识,后面我们用的很多啊,这个图同学们一定要记下来。
32:17
没有往里面深入,这个图一定要记下来再说一遍啊,所以你你学完卡了过后,别人问你N是什么,你都答不上来,要问你这个诶value是什么呀,你答不上来,这个就不行哈,这个基本的是要知道的,好,这就我一个要求,必须记住这个图。这个图我说了啊,一定要记住它。要记住。就。就得记住它。好,记住。好,我截取一段视频。
我来说两句