00:00
程序看一下它结构,那现在呢,我们来写一个最简单的程序员,用一句话来证明你是程序员,用哪句话呀,Hello word是吧,嗯,Hello word证明你是程序员。用一句话来证明你是高级程序员呢?呃,用for循环输出hello word是吧?好,那么这个程序我们这是叫快速开发入门,来写一个案例吧。给他整理一下,这是我们的标题二,那么现在我们就写这么一个小程序,什么呢?输出它在这个地方,我们的目的是要说一下SC这个程序的基本结构,大家注意听好,我要标题啊,啊来,我们写段代码,现在呢,我们用什么写,我们用一个最简单的用编辑,就是文本文件来写啊,使用。ED开发,这个ad的plus来开发,先看一下结构,这里啊这里这里我们先使用ED开发,异地开发,这样可以更清楚的更清楚。
01:07
更加更加清楚的看到一个撕开了的程序结构,我们刚好把这个结构给他说聊两句好。那么这个步骤。啊,结构。结构,那么我们来把这个简单给大家看一下,来打开。这个地方我们开发呢,假设我把这些程序都放到这,我把这些先删掉啊,我们看一个最简单的,先不用集成工具,因为用集成工具你很难看到它底层是怎么跑起来的,所以说我们先写一个最简单的写一个啊叫hello。Hello scanner。当然后缀名儿各位同学就叫scan没问题。好,那么为了以示也这个做一个对比呢,我也写一个特别简单的哈,这个Java啊,做一个对比,看看它们到底有什么区别哈,Java。
02:06
斯scanner,哎,这个就不是这个了啊,就叫Java后缀,那么我们回忆一下JA娃是怎么写的,对吧?JA瓦是怎么写的呢?是帕class hello Java,然后这里面呢,咱们写public static VO的主函数,我们是string。对不对,待会做一个比较argue,然后呢,没有任何返回值,就直接print这样写的system system.out.P。好,写一个叫哈Java,好这就代码写完,最后呢,不要忘了有一个分号,好,我们先看看此时此刻这个JA网能不能跑起来,到时候注意看,这是每个都有目的的啊。因为有些东西你要讲清楚的话,你需要稍微对比一下,那现在我们根据前面讲过的,先用Java c来进行一个编译的工作,我们可以看到编译完了之后呢,我们会得到一个注意,只得到了一个class文件,对,那现在呢,我们运行它,运行它也是very easy的啊,Very easy那就。
03:19
这样运行就可以了啊,这个我先关闭运行的时候呢,我们需要用Java hello。好,这个时候我们就输出来了,看没问题,现在呢,我们来写第二个文件。第二个文件就是什么呢?我们的hello scanner,打开它好,打开过后我们看这个时候怎么写呢?首先object变化了。那是什么?待会再说,Hello,是can。好,包起来,里边变东西了,叫DEF主函数argues,参数写前边,前边后边RRRA类型为是最。
04:08
好,后面有返回值,没有返回值unit等,好,大家看结构已然发生变化。我们先把它刨起来再说它是什么东西啊哈,死开了第一个程序。好朋友们,这个呢,我们写完了里面内容,待会儿运行完了过后我再讲,注意没有加分号。可以不加分号,写完写完过后呢,同学们我们来编译,注意刚才老师讲了开的编译是不是用开C啊,没问题吧,Hello,然后这边我们写的是scan编译,哎,同学们可以看到,当我们编译完了过后呢,我们得到了两个字节码。诶好奇怪,这不以前都是一个吗?为什么这两个呢?这个就有它的一些东西在里边了啊,它有它的一些运行的一些原理和它的一个包装的机制啊,所以说有些有些地方没有讲的就直接过了,其实同学们一直不明白为什么会有两个。
05:15
好,其实这个要讲清楚,扯的东西多,它马上就涉及到半生内和半生对象的事儿,所以说这个地方呢,我待会儿会做一个简单的解释,好,那么现在呢,我们现在运行它一把,各位朋友,刚才老师讲过,我们这个是用来对斯SC源码进行编译的,其作用跟Java c几乎一样,几乎一样,因为编跟编译器嘛,那运行呢,有时can哈。哈老规矩,我们哈是干,那这个时候运行的是不是个Dollar,是他我们先来跑一下。我们一运行,我们发现哈斯康也出来了,诶也是没问题的,好,现在呢,老师把这个做一个说明哈,来我写几个。
06:00
写几个注释来走一个,首先对它做这么几点说明,第1.object表示啥意思呢?它表示一个半生,半生对象,那如果说呃,半生对象啊,表示一个半生。半生半啊。办。伴生对象,那如果说呃,它是一个没有class的话,其实你可以简单的理解成它就是一个对象,你可以简单的理解啊,这里我们可以简单的理解就是一个对象啊,因为我现在还没办法直接往里面深入,第二个呢,同学们可以看到这个hello class呢,就是它的名字就是这个。对象的名字,其实它底层真正对应的啊,注意听它底层。
07:00
它底层。底层真正对应的真正。这个一般老师都没有说这个事啊,真正对应的是这个类名,对象名是什么呢?对象这个,呃,这个类名,类名是。这个名字它真正对象,因为的是对应的这个东西,也就是说其实将来这个对象,它对应的是这个class。是这个类型,那这个类型里面他这个对象是谁呢?它真正的对象其实是这个类名的一个静态对象。第三点啊,后面我们还会说啊,呃,对应的这个类名是它对应的对象是谁呢。对象是对象是这个类型的。对象是这个类型的一个静态对象,其实可能现在讲的稍微有点早啊,但是没关系啊,你们都是有基础的人,应该能理解哈,呃,这个对象是他内心的一个静态对象,名字是这个名字。
08:10
Mo Mo Mo啊,这个这个Mo应该是后的后代,好,为了让他看的更清楚一点,干脆这样子,我们用反编译工具来看看这个到底是什么啊,到底是什么来打开一个反编译工具,同学们用过这个东西吗?GDGy.exe这个用过吗?没有用过,我简单说一下啊,同学们。没有用过的话,我简单说一下,这是一个,这是一个咖啡,就是对我讲这个干什么啊,我讲下面的才对,这个是个程序,它可以把我们的class文件。反编译成Java文件。哎,看不到,诶看不到,我看是。来现在看到吗?听到没有啊,这个我来点一下那个才行哈,大家看这看到没有,这是个咖啡,那这个程序是机这个用过吗?这个工具。
09:06
啊,有些同学用过,有些同学没有,我简单说一下,没有用过,听一下就行了啊,我也不做笔记了,这个工具它的作用就是可以把一个class的文件反编译成对应的Java文件,这是第一句话,第二句话,它反编译过后只是部分,而不是绝对的完全一样的啊说你不能完全把它就是它99%的,90%都是相同的,但是部分还是不一样,因此呢,我要给同学们看,用这个工具我想看一个什么呢?我想看一下这个东西它生成的。这两个东西到底是什么?OK,到底是什么?那么同学们,我把这个工具打开,注意听好。来第一天就是有点麻烦,感觉没学到东西呢,呃,还麻烦对不对,打开它来,我先看一下这个玩意儿。我就先看他。
10:00
点开。哦,明白了,你看其实他。这个哈,我这写的是object的hello class呢,它最后在底层它会对应一个hello class。哎,然后呢,大家可以看到这个猫就到那儿。是一个对象,这个对象是什么类型呢?就你看这个对象它怎么做的呀?哦,大家看这有一个私有的构造器,他把当前这个对象付给了。Mo Dollar,那我问大家一个问题,此时此刻module Dollar是不是就是这个类型是吧?这个应该很好理解,Z大家应该以前学过Java,是代表当前对象,是不是就是我把当前对象交给model?当然,那它又是什么类型呢?它是static类型的。实际上就有点儿类似于原先你们学的Java的东西。
11:05
那当然有老师说,那你这讲完了过后,你把这个也给我说一下呀,诶你看这个东西呢,是hello class,那那反言之就说当我们在这个地方执行的时候,这个主函数大家看到没有,Public static avoid me,哎,这个是不是似曾相识了?你们在学Java时候,老师是讲过这是一个静态的方法,然后在这里面是我们函数的入口,是不是是不是入口,那么这入口它做了一件什么事情呢?它。走了一个hello sc,点点猫Dollar,哎,有问题了,说老师这个是什么玩意啊?Hello sc点点什么玩意儿,注意听第一个点,它反编译有一点问题,第一个点其实是Dollar,这样大家理解了吗?就是它实际是hello,嗯,dollar.model那我点进去看一下,它其实调用的就是。
12:06
这里面的某种,而这个某种里面是不是又有个主函数?看到没有,这个主函数,同学们看到里面我们写的哈,Can这个地方才是我们真正写的。这个内容。明白了,他是这么一个流程,那有些同学说老师如果我们用Java来写的话,如果我我如果我们这样来看的话,这个流程就是这样子的了,什么流程呢?它流程是这样子去听。他流程是这样子的,就是说当。当我们。当我们。编写。编写一个object的这个对象时,它在底层。我就这样想。地层。地层。底层会生成,会生成两个。
13:00
Class文件。两课中间分别是。啊,分别是什么呢?注意听啊,分别是哈。是和。Hello。Sc Dollar,这点大家没问题吧,刚才老师讲过了,那么他为什么要生成这两个文件呢?因为他在执行的时候,它做了一个包装。第四句话。就是撕开了。注意听啊,撕开了在运行时,运行时的流程如下,怎么流程如下呢?第一步。第一步先从。先从注意听啊,先从哪个地方呢?诶从这写错了,先从这个哈,Class的主函数开始执行。开始执行。
14:01
我觉这个就就讲一次啊,执行执行的时候就是这个玩意儿。哎,明白了,来看这里。执行的就是这个玩意儿,注意听,执行的就是这个玩意儿。好,那么他执行的就是这段代码。诶,这个地方我还有点这个快捷键,他这还不好弄了啊,我觉这样写一下吧,无所谓,他从这开始执行。其实这个就有点类似于对应我们的什么呢?对应我们Java里面那个,呃,就是那个呃,命命命命方法开始执行,那么执行的时候第二步他干什么事情呢?注意听啊,这点很重要,注意然后然后调用。调用调用的是它这个地方,其实应该是我就直接写成正确的了啊,它实际上是调用的这,然后调用的是这里。这个里面的主方法。老调用谁呢,这个哈。
15:02
Dollar这个类里面的主方法。内的一个主方法啊,主方法哪里呢,就他。那这个地方又干了些什么事情呢?第三一步,各位朋友,第三一步,第三一步我们要研究一下这个东西哦,这个东西是干什么呢哦,当我们一打开,发现这里面才是真正包裹了我们这里面的主方法就它。看到没有好,就这里面是这里面这个主函数干什么,即执行了,即执行了下面的代码,下面的代码什么代码呢?就是刚才老师写的这段代码。那换言之,我们真正写的这个主函数代码被包裹到这个位置了哈,就它。就这么一个流程。啊,就这么一个流程,说老师他那为什么他要这么去干呢?可能现在我跟你讲,你你现在也听不清楚,他为什么要这么做啊,我给大家讲,我先提一句,你能听懂就听,听不懂后面我们还要讲。
16:04
因为撕开了的设计者,他把静态和非静态分成了两个部分。他认为静态不是属于。面向对象的范畴,他把静态拿掉了。那么静态拿掉的有一个问题,因为你JA烷里面有静态的东西,怎么又去表示静态的东西呢?它就把一个注意听地方,把一个类天然的分成两个部分,就如果你是一个object啊,你是个object,那分成两个部分,如果你如果你将来要把静态的东西行,要把一个类的静态东西就写,呃,非静态的就写到这个里面去。非静态,写到这里面去。好,静态的东西呢,写到哪里面去,静态的就写在跟他同名的object里面去,就这个意思,那么如果你只给了,如果你只写了一个object呢,它就会生成一个两个文件,这个就是一个文件,这是一个文件,这个文件里面就相当于说对他做了一个包装。
17:03
好,你先暂时理解这啊,讲的还不透,现在我没法讲透,因为我现在要讲透的话,马上就涉及到半生对象,还有这个半生内的很多关系就扯不清楚了,我只现在告诉你是怎么回事,如果我不告诉你呢,你可能更觉得奇怪,好,我先点到为止啊,现在先点到为止。那么我先点到这就可以了,好,那么紧接着呢,老师还要做点注释,就这里。这个地方呢,我再做几点说明啊,咱们就说一次,以后就不说了,DEF表示什么呢?是一个函数,是一个方法,是一个方法。哦,代表它是一个方法。它有点类似于什么呢?就类似于我们这个Java里面的那个成员方法,就它的关键字呢,叫DF,这是一个关键字啊,这是一个关键字啊,这是一个。
18:00
一个关键字例好第二一点,May代表这个方法的名称,表示方法名字,那么如果你要让这个函数从这入进去,你必须取面,不能取别的名字,这是一个固定,就是命表示我们这个入入口啊,它表示表示程序执行的入口。入口。那实际上同学们刚才经过分析,其实这个真正入口其实被包裹了一下,被包装了一下,但是呢,你直接把它理解成一入口也没有错误,也没有什么大错啊好注意听第三点,第三句话,注意看这里哦,老师这个argue这个代表什么意思呢?好,这个地方就代表我们的行参。表示表示一个行参,注意听在开里面有个特点,开的特点是特点是将参数名写在前面,将类型写在后边,注意听啊,将参数名写在前面,在前,类型在后,好后我就这个说一次,那么这点跟Java是有区别的。
19:10
啊,包括很多语言也这样子,不构语言它也是把参数名写前面,把类型写后边,但Java呢,是把这个类型,把类型写前面,把参数里写后面,同学们学过那个吗?像存储过程你们有接触过吗?存储过程是不是也是这么干的呀,存储过程也是这么干的,好第四一点大家看这里,这个代表它是一个数组,类型是是柱类型的,表示一个数组。它的类型是数值表示类型,类型类型是一个数组,好就写到这最后第五一个第一次嘛,这个地方表示什么呢?表示它的返回值为空,Unit代表空的意思啊,这地方就代表它有一个返回值为空。
20:00
表示该函数,表示该函数的返回值为空,为空又有点类似于我们Java里的VO。奥报易德,好的,那么下面这句话我就不用多说了,第六句话大家可能理解了,奥斯罗师这什么意思啊,就是输出一句话,就是输出一句话,就是输出,哎,输出一句话。一句话完事,好,同学们,这个流程我就说说完了啊,还不是很透,因为后面要讲透的话,还要涉及到很多东西,但是大家大体流程我觉得讲到这就可以了啊,再讲的话,可能就现在大家还没有这个基本的一些知识沉淀,所以说也听起来有点吃力。好,我就说到这儿,那大家看我们的第一个入口的小程序,咱们就写完了,那么写完以后呢,我再做一个实验,我做一个实验,请同学们思考我这样做行不行,同学们看我在前面画了一个图,我说。
21:01
Class自解码。会被Java运行,就是Java生成之源嘛,会被Java运行到装载到JVM进行这个。执行我说了,嗯,SC也会得到自己码,会被SC运行,我问大家,如果我用SC来执行。Java c编译的职业嘛,咱们可不可以我们试一下诶大家可以动动脑筋啊点所以看现在呢哈,点Java。有个自检吗?我来执行一下。诶,同学们看,就是我们看看他真的是有没有关系,因为这是同一个人写的编译器。我这样用是开去装载它编译的这个自解码文件,我一执行你发现。没问题。哎,没问题,但反过来说老师,那我反过来呢,如果我用Java。去执行是Canada的呢。这个就不一定可以了。
22:01
因为我的范围比你大。对吧,所以说我这样执行有可能会报错啊,有可能会报错,我一执行发现他果然就报错了,他找不到。找不到好,所以说这个关系呢,再次证明这个编译器它们之间的确是有相通的地方,因为为什么,因为这个编译器,这个Java运载的编辑器,还有这个干编辑都是马丁器的,所以他在这地方他做了一些兼容。但是不是全部啊,再说一遍,不是全部,我只是把这个简单的聊两句,好,同学们,这个案例我就说到这儿,我把这个呢给大家快速的整理一下啊,各位朋友。好,我就说到这里,它的步骤呢,老师就整理到这里来了。好的。还不是讲的很透啊,到时候我们还要再就是因为现在刚开始,所以说我只是做了一个大概的一个流程,一个好,第二步,第三步好,第四步好,我把这个案例给同学们粘贴,拷贝到这里,这是我们的案例。
23:05
代码案例案例代码如下,那刚才呢,老师把这个呢,给同学们先复制粘贴到笔记中去,诶这样子大家呢,再看就会变得非常的清晰,好可以了,好,同学们第一个案例我们就讲到这里。
我来说两句