好了,我们继续我们的课程,那么大家注意,接下来呢,给大家讲一个字符串类,那么讲真之前我要告诉大家的是什么呢?一个好消息哈,面对象的这些概念我们百分之九十九都讲完了, 接下来讲这个字母片类呢,让大家通过这个类啊去复习一下我们前面讲的一些知, 通过阅读元代码复习。此兄弟呢,是我们工作中最常见的一个类,我们要不仅要掌握他,掌握他的常见用法,而且要对他的底层的原理要掌握好,不然的话在工作中很容易犯错。 那么那么回过头来看看我们的这张图,大家还记不记得给大家说这张图,大家现在可以用自豪的看一看,稍微过一下,这些概念我们是不是都学过了?内科对象我们也学过了 啊,然后往下翻,这内存模型我们也学了,是不是垃圾回收机制我们也学过了,对吧? 然后呢? this 的本质是什么? static 是什么?变量的分类也都学过了是吧?面相对象的太大特征啊,继承啊继承,里边呢,又分了一大堆,我们也学过了,分装也学过,多肽也学过了,抽象类学过了,是不是接接口哎,也学过了, 是不是就差一个内部类了?内部类咱们最后说了,所以大多数的概念我们都完事了啊,那么,呃, 咱这次主要讲 stree 啊,我要跟大家讲报个喜,就是说概念都讲完了,那接下来我们说 stree 的话,就是就是要把表面的概念我们要稍微复习复习。首先我们看 streestree 呢,我在这给大家画了一个垂垂涎欲滴的一个 羊肉串,这不不是,不只是个羊肉串啊,中间还串人吗?串点辣椒,那么羊肉串,羊肉串是什么?就把羊肉一个个串起来,对不对?那字胡串是什么呢?就是把一堆字胡串起来, 便于我们统一使用啊,含义是一样的,所以咱们这个名字起的特别好,叫字母串啊,看字里边这个串,你看多形象啊,对吧?拿一根换起来字母字,那么字母串大家看有这样几个要点我们需要知道, 来我们看一下啊, 可变自古序列,什么叫不可变?我们一会再说。不可变的自古序列,然后呢?死春泪,他现 先把这个名词逐渐了就熟悉了,叫不可变自如局列,当然后面还要学什么?学可变自如局列,死圈是不可变的,死圈位于加入点烂包,那因为他是位于烂包的话,大家回忆一下,咱们讲那个包的时候,如果这烂包我们是不是可以直接导入使用了,是不是?然后呢?还有这个 字符串,就是 u 内扣的字符序列啊,比如字符串扎碗,就是字四个序列的四个字图组成的啊, ja、 v a, 是不是?然后呢?扎碗呢?没有内置的字符串类型, 八个基本数学题型里边是没有字母块的好不好,只有字母,那么所以呢,我们的加入里面呢,定义了一个类叫死菌类,有的语言呢,它是内置的,有基本数学题就有字母块,但是加上没有。然后呢,每一个字 这幅串我们都用双引号引起来,这就是怎么做? ok, 那来我们看我们的圆码,我在这呢单独写一个类啊,大家注意,我在这个在哪写呢?这次就不加包了,因为这个包呢,都是 都有特定的含义啊,我就放到外边叫 test 啊, string 啊,就测试字不动, 来,大家看,首先我们看看怎么去创建一个词,口哨对象很简单, sque s 一啊, s 一,比如我光一个双引号,这指的是什么?是空字的一块, 是吧?然后呢,我可以再再定一个 s 二,对吧,等于什么呢?等于这样,比如说,嗯, 好,这就是定义,定理这个手,比如这么写 s news 啊,里边呢,他会自动转经,也可以,好吧,也可以, 然后大家注意这个呢,工字符串啊,他不是空,跟这个是两码事。 s 零等于,那这是 公,这什么都没有啊,什么都什么都不是,这个空字符串呢,也是个字符串, 这时候 s 一已经不空了,听懂了,他这他里边放了空字呼串啊,然后呢,这是扎尔,然后呢就是去这扎尔,这肯定更不空。 然后呢,我们看一看,我们打印一下它的一个长度, lance 啊,比如我打印 s 一的长度, 打印 s 二的长度,对吧,让一下 好工资,不是长度,是零,看到没有, s 二呢,是四,对吧?然后有的时候,老师,那我能不能打印 s 零的长度啊,咱们试试 s 零点 s, 大家看会有什么现象啊?走好,大家看,报错了啊,报了一个这样的,叫空指针, now point except, 空指针异常啊,就十二号 空指,正意义上是怎么造成的?就是这个对象是空的,啥都没有,我去教教他方法,他既然什么都没有,肯定方法也没有了,什么都没有,好吧,所以呢,报错了,所以这个是不行的,空 四五串的时候呢,也是有这个对象也有啊,好不好?来,现在我们要干嘛呢?这这这是他最常见的三个创建的方式。 然后呢,这次课呢,我们要原码看一下,来,大家看,按住 ctrl 键左键单击 stree。 好了,大家看我就进入了什么?进入了我们的 streen 类,好,我们呢从上到下可以稍微复习复习啊, 然后这个上面这个在这,我把 out 加七,把这个类结构也弄出来, 好吧,让大家看 package 啊,打包到加入点烂包对吧啊,复习一下 package and po, 大家可以看到我这个类呢,使用了外部的这么多类,什么加入点 i o 包啊, n i o 啊, utile 啊,大家看是不是用了很多呀,看到没有,这 不认识没关系啊,你只要认识一泡就行了,咱们看原码的话就就找几个认识的啊,是为了复习知识。 好,下面是一对诸事是吧?一大堆诸事,英文,英文好的话看看没,不好就算了,然后再再看啊,再看再看还有哪些认识的?巴宝莉可公开的对不对? final class 是不是意味着别人不能继承我们的死群啊? final class 是不是 好,然后呢,我在这实现了哦,看一个,两个,三个接口, 看到没有,我直接了三个接口,也就是这三个接口的方法,我都需要干嘛,都需要去重新,然后看他都有什么方法呢?比如看第一个 siri 来点一下, 哎,他这个空接口,看到没有,他是个空的,是没有方法需要你实现,也就是他只是 是一个标记接口啊,我们会经常碰到这样的标记接口,他只有个名字,其他啥都没有, 好像这样的呢,我们看有什么是一种方法,大家看是不是有方法呀,可能拍下 to 对吧。像这样的呢?哦也有方法,看到没有这个接口叫字不序列接口,大家看他有这样几个方法,长度, chair, at 是吧? subsequent, twist, train 啊,对吧?然后等等 chairs 啊,扣的我的 point 等等。 好吧啊这回忆一下刚刚讲过的接口啊。然后呢下面有一大堆,哎。看这个咱们抓重要的时候看这是一个核心的属性,我们要看一看 核心的。首先他是私有的,私有的就是外部访问不了啊,对不对?这私有的。第二呢我们叫什么呢?他加了个翻译呢 发音都意味着他只能被处置化一次,我们刚开始说自负算什么是不可变自呼序的,就是因为他我这有个发音的修正,我只能被放放一次纸,第二次就不行了。然后呢这这后面是什么呢?后面这个拆下数组啊数组我们还没有学啊,当然马上就要学了。他这个数组 他这个数组字不不足,那么也就是说我们进来的这些字符呢都会放到这个速度里面,就弯这个速度里面。 好吧,这是我们自助刷的一个核心的一个呃属性,然后再大概往下翻一翻啊翻一翻这是个什么东西? 这是个构造器,是不是啊?这是个构造器对吧?巴布利国三构造器。然后呢啊对吧? this 点 value 等于工资重点吧,也就是说如果我看这个方法你就知道了,如果我去溜的时候呢,我什么都不写, 是不是空字不串呀?大家看如果我什么都不写,大家看人家写的很清楚啊, 是不是这工资不快好不好?那如果我传进来呢?就我像像像这样一样,我就是传进来一个字不快了,看到没有?传进来以后呢?干完了就把这个字不快的弯流等于弯流嘛,对吧?把它字不顺的送给我们。这个,这个这个地方,是不是 然后呢?进来个数组呢,对吧?我们做数组的拷贝,等等吧,等等,后面这些我们就不看了啊,看也看不懂,看不懂就不要看了。然后呢?我们找一个 刚刚说的构造器,是不是找一个 lance, 大家看这个 lance, lance 是什么呢?是,就是这个速度的长度,看到没有?速度里放了几个就是几个,好吧,还有找 一个咱们学过的方法, ecos, 看这个一口同款,大家看一口同款,我们前面说重写一口同款,大家看这个支付,这是不是重写了,哎。首先看这个,大概看看这个思路啊, 首先判断是不是同一个对象,如果是同一个对象,那就直接是错了,是不是?然后呢?看他是不是自行车的什么类型,如果是的话,那我就对吧,然后再比较,那如果不是呢?就别废话了,就返回 boss 就完事了,是不是? 然后呢?如果是是这个例子,好,这里面又写了,对吧?然后把这个呢?他是个 object, 对吧?他现在是四群,我是不是要强转为四群啊?这是我们前面讲过的类型转化,你要不转的话,我们只认识他是 object, 不是他的四群,是不是?我必须去转回来,转 回来以后呢?干嘛呢?把里边的速度拿出来,是不是?然后呢?我就循环比较,循环比较 一个字头,一个字头比,他只要有一个字头不一样,我就认为你不相等,对吧?发挥 boss 只要有一个不一样,那么整个循环完这儿没有出发,对不对?没有出发,那我就说完为腾出 看懂了没有?还有一个方法叫什么呢?突死讯,看有没有出现在哪呢?突死讯,咱们大概知道的方法啊, 这出去啊,出去这呢?直接啊,这个啊,返回内死啊,返回内死, 因为他本来就是支付炮,对吧?自己返回去就行。好了,这就是大 这个圆码啊,大家看,嗯,方法太多了,大家看多少号代码?我也不知道多少号没研究过啊, 多少天没研究过,也不用管了,应该好几千毫,呃,通过简单的看圆码翻一翻,相当于复习一下我们前面的小知识好不好?然后呢?顺便学习一下这个,这个这个方法,然后这呢,大家注意,这会报 公子真异常啊,因为这个对象是没有的,对吧?真,真正的闹,真正的说 好,同学们体验体验啊,打开原码,不要害怕,原码里边大多数是看不懂的,你只要能看懂那么一点点,就是这个,好吧。
粉丝2208获赞8002
看一下这段加瓦代码犯了几个错误,很显然,他是想判断字不串的第一位是不是数字七,这里呢,犯了三个致命的错误,一、 如果不能保证他为空的情况下直接使用,会发生 nonpointeratics, 也就是空指针异常。二、双等号的左边是字母串类型,右边单引号的七是叉类型,两个之间是不可以直接比较的。三、 字不串的比较要用 ecos, 而不能用双等号,所以呢,这里面要改成它不等于空,并且它的第一位 ecos 双引号的七。 当然了,第一位等于七其实就相当于以七开头,所以呢,我们有更简便的方法,那就是它不等于空,并且 bars with 双引号的七就可以了,学会了吗?
别再这样使用 bigaisimo, 否则同样会造成精度丢失。在涉及到金钱交易计算时,为了避免扶点数对计算精度的影响,我们通常会选择 bigaisima 来处理。但是 bigaisima 的有些方法也是有坑的,稍不注意也会产生精度丢失的问题。 我们先了解一下负点数为什么会出现精度丢失的问题。在计算过程中,有些负点数,例如零点一在十斤制下是不循环小数,但是当用二斤制表示时是无限循环的。由于计算机的资源是有限的, 所以没办法用二进字精确表示,零点一只能用金字值来表示,于是就造成了精度丢失的情况。我们看一下一个单身宝的第一个常见坑,在构造方法时传入负点数。零点一,当控制台输出时发现带了很多小数点,说明精度丢失了。这是因为构造方法传入零点 一时已经是浮点数类型了。在使用牛逼格呆森猫时,就会把这个金丝子保存下来。再看一下第二个常见坑,逼格呆森猫点歪六奥夫方法,闯入一个很长小数点的附点数空中台输出,发现小数点只剩下十六位小数了。 原因和上面类似,负点数最多只能保留小数点后十六位。上面两个坑我们推荐使用支付串类型参数,这样就不会造成精度丢失了。关注我,帮你编成排坑!
为什么出错了呢?这又是什么?很多扎瓦书中的案例都有这样的写法,初学者抄完了之后,一执行立刻出错。就是因为我们根本不理解这个 airgs, 实际上它是这个方法的参数,如果使用它就需要在执行的时候传递进来,就好像你买东西必须要给钱是一个道理,不给就得出问题。 传递的方式也很简单,在执行的时候选择配置添加参数,多个参数之间用空格分开。当然如果我们使用道子窗口执行,就在命令行后边添加参数,以空格分开。学会了吗?
有些同学呢,在执行 java c 这个程序的时候啊,可能会出现一些错误,那在执行 java c 时出现错误,我们把它叫做编译错误。 我们来举个例子啊,比如说,大家看,这是某一位同学写的代码,他写好之后呢,我们是不是要用 java c 来编译啊? 好编译。另外呢,我要保证扎瓦 c 程序的编码跟我原文件的编码是不是要一致啊?所以加了这个 incoding utf 八这个选项。好,我们回车编一下,哎,结果他报错了,对吧?那这种错误我们称之为叫编译错误。 编译错误呢,大家不用怕,它会提示你究竟是哪行代码写错了,那我们要学会去 解读他这个错误信息啊,比如说大家看他说哪行代码写错了呢? hello, 点扎瓦,后面这个三很关键,他就说啊,是你。 hello, 点扎瓦原文件中的第三行有错,第三行是谁呢?一,二,三, 哎,是这样,有错是吧?那具体是什么错误呢?后面他会进一步的提示啊,他说有一个非法字符,但这个非法字符啊,你一开始可能看不出来是哪个,这个时候就要你去仔细排查一下, 我们前面也说过,像这个引号也好,还有最后这个分号也好,都应该是什么?英文的引号和英文的分号。可能呢,这位同学呢,就是其中不小心把其中一个写成了中文的引号或者分号了, 那这个怎么排查呢?那对于英文的这个引号来讲啊,你选中它,你会发现它比较窄啊,包括分号也是啊,那对于这个我们再来看, 他选中了以后,这个分号是不是看起来很宽呢?哎,这就是有可能是中文的分号,那我们把它删掉,重新切换到英文的输入法,切换到英文的输入法,然后我们输一个分号, 你再选中,对比一下,哎,是不是看起来很窄了?哎,可能就是这的错,所以呢,大家遇到这种错误,你根据他提示的错误行号和一些 这个错误信息,你基本上都能判断出来是哪行出现的错误。好,改完之后我们重新保存一下,再来编一下, 是不没有错误了,哎,你去运行肯定也是 ok 的。好,再比如说呢,你比如说第一行这儿写错了,我们说这个 java 中啊 啊,这些固定格式里都是严格区分大小写的啊,他不小心把这个字母写成大写了,对吧?我们来看一下会不会报错啊? 同样的,他也会报一个编译错误,你看他说第几行有错,现在能看出来了吧?哎,他说第一行有错,需要一个什么 class 啊,而且人家告诉你是一个小写的 class, 后面这些呢,都是以后我们会学习的啊。 好,根据他这个错误提示,我们把它改回来。当然呢,你要知道他这个错误有可能是有这种连锁的效果 啊,就比如说你的第一行错了,他认为你后续的二四都有错啊,所以你有的时候只需要改其中一个,然后再来看效果,可能你改成改完一个,剩下的错误都啊, 恢复了啊,就都正确了。好,改完之后我们再来编译,是不是就又没有错误了?好,这是我们的编译错误, 这种编译错吧,以后大家会见的啊,比较多啊,不过也没关系啊,你慢慢积累啊,见得多了就知道哪种编译错该怎么解决了。
大家好,我们今天接着聊数组一出的话题啊。呃,今天要讲的内容跟昨天是比较紧密的,如果大家还没看过昨天的内容的话,可以先去看一下。呃,我我们先回顾一下昨天的内容啊,昨天的内容就是我们在科比函数里面,呃,对 a 数组有一个 溢出,对吧?这个溢出我们当时说了,就说他会呃影响到我们卖函数的这个呃 rbp, 对吧?从这个占结构来看的话,我们可以看到就是,哎向右溢出是不是影响的是 rbp 的值啊?这个 rpp 的值具体是怎么去影响这个这个导致这个断错误的?我们我们昨天也分析了,就是呃,在这个后面函数返回之前, 这个地方是不是会对呃这个 r b p 进行一个返回啊?但这个利用指令它就会对这个 r p p 进行一个弹出,对吧?就是我们账上被修改那个字,它会弹出到这个 r b p 里面,然后到这个闷函数里面,对吧?这个 copy 执行完了以后,相当于在闷函数里面这个是 r p p 是一个非法的值,那么与此与此对 呢?就是说我们这个 cop 函数后面的话,他也会掉这个利物质里,相当于这个时候利物他会把这个 r b p 的值付给这个 r s p, 是吧?这个 r s p 这个时候他拿到是不是就是一个非法的这个内存地址啊? 然后调入问题的时候,我们这个时候是会从这个这个站上面去弹出这个返回地址的,弹出这个返回地址他都要对这个 rsp 进行一个引用,对吧? 我已用完了以后这个时候我们是不是就相当于这个地方就发生这个非法地址的访问了?我们大家都知道,就说我们在 linux 系统里面,如果你去访问一个非法的内存地址,这个时候你是会收到操作系统给你发的一个 断错误的这个信号的,对吧?导致的结果的话,就说你程序的崩溃。今天的这个第三个函数,是吧?我们不只是说把这个 a 数组定义到闷函数里面,那为什么是说,呃,他这个时候他就没有问题了,对吧?那我们要回答这个问题,我们要看一下昨天问题是什么引起的?就我们出问题是不是在这 cop 函数里面,然后的话我们想返回到 上一集这个函数里面,他这个上级函数返回的时候,他他是不是才会出问题啊?那意思就说要出问题,至少就是说,呃,你这个出当前出问题了这个函数,那上层呢?还有一个函数,对吧?这个函数返回的时候他才会出问题。可能在大家的印象里面,我们这个程序的入口化都是这个慢函数,对吧?这个慢函数直接完了,是不是整个程序就完了呀? 呃,答案显然不是这样的,对吧?我们可以简单来看一下,就是,呃,通过会变这个的话,就是我们今天这个函数的生成的方式啊,我们今天不太一样的,对吧?这加了十一个 static, 加这个 static 的话就说我们在这个过程里面,我们不去链接 lipsey, 我们把所有的代码一二进制的形式直接就是封装到这个 static 三里面,相当于这个时候它运行的时候是不会去加载动态库的,对吧?那这个导致结果就是这个程序的话是很大的,可以大家也可以看一下,对吧?你看我们昨天, 嗯, static 二的大小是在十六 k, 如果我们以静态链接的形式编出来,这个时候,嗯,他是不是已经变成八百八十 k 了,相当于说他运营需要的代码都是放在这个,呃, static 税里面了。 然后的话我们可以用 object 杠 d 这个选项来对这个 static three 进行一个这个反汇编,对吧?这个我也提前做好了,这个 static three 刚才讲的他是不会有问题的,对吧?呃,我们接着看这个反汇编,这个的话就是我们 static three 对应的这个所有的都汇编代码, 嗯,就说我们知道我们我们程序最终他肯定是会去调用我们的闷函数的,是吧?那我们要看的就是说这个闷函数在哪被调用的, 来看一下,对吧?这这个地方是不是我们卖函数的这个代码段啊?那我们要看的就是说,呃,这个卖函数是在哪儿被调用的?我们找一下来看一下,对吧?这个的话是大的函数,但这个整个程序的执行流程不是 我们今天要讲的重点,对吧?我们今天,呃要看一下这个梦函数他的上级到底还有没有函数调用,他调这个函数的话,这个函数还有没有返回,因为只有这个函数有返回的话,我们才会是说,呃,我们这个程序崩溃,是吧?那我们来看这里就是我们的梦函数是被 steam 函数去调用的,对吧?他在这里的话付给这个 idi。 这个,这个,这个我们看过前面分分享的同学应该都比较清楚, 就是函数调用过程中用来形,用来存储形参的第一个变量,对吧?相当于这个时候是为我们调用这个,这个函数就是我们的下一个函数,是不是叫 lipsy studyman 啊?这个函数做准备的, 所以我们看到就说我们,我们我们的梦函数最终的地址是不是传给这个 steam 这个函数了?这实际上是我们呃 c 库里面的一个函数了。我们来看一下这个地方,他把这个前面这个函数的呃定一层,定一个新的这个别名,对吧?这个函数里面就说我们实际上去调的时候调这个和调这个他是一样的,对吧?他就相当于一个函数别名, 那么这个函数别名他又是这么怎么去做的呢?我们看一下,看一下这个函数,对吧?在哪定义呢? 通过查找我们看了,是吧?没有找到他的定义,但是我们是可以看到就是这里有个红,把这个红定义他的,对吧?那我们找继续找一下,我们是不是可以看到这个红, 他是这个函数名一个红的形式,对吧?在这里他去定义的这个的话,就是我们的一个像最终呢去转换过来了,就是我们的 nipsssssssw, 对吧?这个函数是不是第一个参数就是我们的函数啊?刚才我们从这个汇报汇编代码也可以看得出来,对不对? 就在这里他作为第一个型材变量,那我们要要要去看的事情,是不是看一下这个梦函数怎么去传递啊?你看这个,这个 starty 梦这个函数是不是做了很多事情?嗯,这个不是我们今天要去关注的点,后面的话也有机会也可以去跟大家分享一下。那我们看到就说这个函数最终的是不是 要用这个函数啊?要用这个 study command 这个函数,你看一下,我们可以看一下这个,呃,这个闷这个 studyman 这个函数,你看在这里它是不是把这个呃第一个参数复到这个战片以零 x 七零这个地方, e x 七零,你看到这里是不是又复给复给了这一个函数啊?复给了这个函数,对吧?就没问题嘛。最终这里还是要用这个 study call man 的函数,把把 man 函数当成第一个参数, 你看这个函数进来我们就很明显了,你看这个函数的定义是不是 low return, 就表示这个函数他是不会返回的。实际上我们都问函数执行完了,我们就会调用这个 except 这个函数, except 这个函数的话,他就会当前那个进程到一个销毁的动作,他是不会返回的,对吧? 那从这里我们就可以大概明白,就说为什么是说我们这个闷函数这个里面的那个上一集的 rbp 这个被修改以后,他是不会去触发这个断错误的,因为是说 我们调这个闷函数的这个函数是不是他不会去返回啊?他不返回的话,我们也不会去引用这个非法的地址,所以,所以我们这个整个程序能够正确的去运行好了。嗯,今天大概就分享到这里,我相信这个流程的话还是比较清晰,如果大家有什么疑问的话,咱们在这个评论区去讨论啊。好的啊,谢谢大家。
啊,我们刚才呢,已经将第一段程序编写完了,然后从编译到执行,整个这个过程我们也走通了,对吧?那刚才在你练习过程中呢,可能会出现一些问题,所以在这啊,我们把这个程序中 常见问题说一下,好吧,当然这个常见问题可能你刚才没有遇到,那你就听一听,对吧?这个当前车之鉴,听了,对吧?以后你自己写的时候也避免。 那第一个错误就什么呢?在你自己写代码的时候,不小心把单词写错了,比如说你看这单词这么写,你看他颜色都变了,对吧?自己又没发现,所以在这啊,这个错误其实就算最低级 错误。什么呢?叫做单词拼写错误,对吧?然后第二个,第二个错误是什么呢?我先把这个改成正确的啊, 第二个错误是我们要求什么来着?我们说原文件的名字,也就是这个名字跟你这个类名是不是必须是一模一样的, 对吧?他俩必须一模一样了,你不能写错啊,如果你写错的话,变异的时候肯定会出错,所以在这啊,我们要求什么呢?原文件名字和你这个类名 类名必须一模一样,是吧?你可以自己尝试一下啊,比如说你看 这啊,不小心这个单词写成 w 了,或者你你可能更不小心写成一个 a a 了,对吧?随手写了一个 a a, 那现在我对他重新进行编译啊,看着我进到一盘,然后春,然后扎瓦西, 那你说这个时候我应该是扎瓦 c a a 还是 hello word 点扎瓦呀,你看,直接就搞错了,所以在这啊,那这个错误我也可以给你接过去 叫出错,这可能是你发生的第二个错误啊,还可能出现什么错误呢?就是我们所有的标点必须是什么呀? 必须是英文状态下的。这个英文和中文还差别还真挺大的啊。比如说,你看一下中文状态下标点什么样,然后英文状态下标点什么样?比如说我们先调到这个中文啊,比如说我们调,嗯,方括号、 圆挂号、花挂号,然后叹号、分号、冒号,然后双引号,还有单引号,然后还有大鱼小鱼,然后还有问号, 你看这些全部都是中文状态下的,然后我们对应英文状态下的,我们也打一下,比如说 你看啊,这我已经调成英文状态下来了。方括号,然后你看对应的小括号, 效果好还是不太一样的啊?你看这,然后包括花过号,花过号,你看一模一样,然后再看一下叹号, 叹号也不太一样啊,然后分号,分号一样吗?分号瞅着好像是一样的,我看看这个写没写错啊。中文的分号啊,他俩一样的,然后冒号,调一下英文状态下的冒号, 这俩冒号一样吗? 中文的,我再打一次冒号,瞅着好像又不太一样,又一样的,然后双引号, 然后单引号,当然我都得调双引号, 单引号,单引号。你看啊,他们俩这个倾斜程度也不一样,然后包括大于号,小于号,然后包括这个问号。 你好,上面这个这个问号我们调成中文的,再试一下。他俩一样吗?有些一样,有些不一样 啊,所以你要严格区分。那有的时候呢,好多人为了什么呢?为了那个怕写,怕写那个符号的时候 就写成这个中文的,他们可以调一下这个输入法的设置,调成什么呢?改一下属性设置, 然后这有一个什么呢?中文时使用英文标点,这样以后无论你是中文状态下还是英文状态下,你使用的都是英文标点了,所以你就可以把它勾上,对吧?那我就不勾了,因为我不愿意那么用。 好,那这个是符号都必须是英文状态下,你要是把这里面不小心写成中文状态下的了,那你这里都会出错了。你看,比如说你这写成中文状态下写这,那明显都不一样, 好吧?然后再来那第四个,第四个是什么呢?第四个就是我们希望你要成对变成, 什么叫成对编成,就刚才咱说的什么方括号啊,花括号啊,圆括号啊,包括尖括号啊,包括双引号啊,还有单引号啊,你有没有发现这些我在写的时候都是一对写的, 对吧?我为了防止你啥防止?比如说你这玩意如果要不是一对写的话,你可能先写这面,然后再写这句话,然后你再写这,那你这边如果忘了怎么办?如果你现在这个代码不小心哎,写成这样, 那你看你自己能看到你哪块少了一个东西吗?对吧?所以为了防止这个东西,我们在写的时候,你看我刚才怎么写的,写到这的时候划过号,然后这个,然后再往里面写, 划过号,你看往前退一下,然后你看所有的都是一对一对写的,对吧?然后最后写的这个,哎,这底下又少了一个,对吧?因为这一对你也得一对一对写, 好吧,千万记得成对变成,要不然的话你现在代码少,等你以后代码多的时候你自己少了。哪对,你说你几百号,几百行代码,几千号,代码真少了一个这个符号,你说你上哪?对去? 你再加上你的格式不完整,你看我们这格式啊,一定要注意缩进。这个我也当一个注意事项给你写过来,虽然他不是错误啊,但就是要注意吧。啊, 第五点要注意什么呢?注意缩进。什么叫注意缩进啊?你看着,你看我这个代码有一个非常好看的一个格式,那如果你的代码比如说全部都顶头写,你这代码编译和执行也能成功,但是不好看呀, 这我改成正确的啊。哈喽,玩了,不好看呀,对吧?一点层次关系都没有,所以我们只要遇到花果号,你看这不花果号吗?里面东西全部缩紧,全部选中,太往后缩, 然后再遇到花果号,里面的东西也是全部往后缩,比如说以后我们写代码 f, 然后你看这又有花果号,那里面代码再往后缩,只要遇到花果号你就缩就可以了。好吧,比如说你要往前缩, shift 的太饱,往前 太婆是往后在这啊,叫什么呢?嗯,叫缩紧,叫太婆,然后只要 只要遇到划过号就进行缩进,你只要遵照这个原则,你的缩进就没有错,对吧?然后还有向前缩进,那叫什么呀?说服他, 加上他,好吧,一个是往后走的,一个是往前走的,对吧?这些就是为了格式好看啊, 为了格式好看,你在前期的时候一定要模仿老师的这个。呃,一些小的习惯潜移默化的就成为你自己的了,否则 你现在如果这个代码不规范的话,你后面改的时候是很难改过来的,真的是很难改啊,慢慢感受。那下面我们还需要注意啥呢?比如说我们在进行编译的时候, 第六个变异的时候,那个代码是不叫做扎瓦西点 ese 不用录啊,然后你的名叫做 helloword, 点扎瓦,这个点扎瓦后坠得带着的, 对吧?然后在你直行的时候,比如说第七个直行的时候,我们是扎瓦这个命令,然后 helloword 后面的点卡是不带的, 对吧?这个别整错了,然后再来第八个,第八个是什么呢?就是我们扎瓦桩大小写严格区分, 或者说大小写非常敏感,就比如说你的那个类名,你起的叫做 hellowwwor 了,那你要是起成 hellowwwer 了,这完全就是两个不同的了,包括你写的 a 和 a, 这都是不同的, 对吧?包括你写的帕布里克跟你写的帕布里克,这完全是不一样的好吧。所以啊,你千万大小写啥的一定要圈开, 该写小写的就是小写,该写大写的就是大写。所以你前期不知道什么时候小写,什么时候大写,就是模仿老师,老师咋写你就咋写,这些永远不会出错, 好吧。再一个第九个什么呢?就是我们那个闷方法的那个格式,这个闷方法的格式包括外面这个框,你别写错了,那这 这个相当于啊,说我们要携带吗?因为我们现在不知道这个东西是啥,我们就当做有一个, 有一个框子,这个框子格式你自己搞好啊,来,我插入大马块,外层 papple 雷克克拉斯,然后里层 papple 雷克斯代替个 boy 的命,这里面你想写啥都行,然后这里 这名是随便起的,包括这个 args, 这个名你也可以随便起,但是除了这两个红色的,其他的这些你必须跟我格式写的是一模一样的, 跟我这大小写啥都得一模一样。但是这具体是什么意思,我们后面慢慢说,现在我们只要会写就行了,对吧?写时间长了,哎,你就不会 问这为啥直接咔咔就用进去了,好吧,然后再来第十个, 第十个你看啊,就刚才我们写这个代码里,你看这已经写了个克拉斯哈喽位了,那现在我能不能这样,我在下面呢,把这个代码复制, 然后在下面再粘贴一下,然后这个里面不叫害吗?害,知道吧?这个里面呢叫哈喽, 这吧里面说出的话不一样,请问在一个原文件中可以有多个有多个类吗?这个克拉斯就是类的意思,虽然现在不知道类是啥,但是这个名字你可以叫出来啊,说这是一个,整个一个大类,这是一个大类,一个原文件中可以存 带多个类吗?那我们试一下重新编一下啊,重新编一下,哈喽,我有点扎了,然后你看这,他说类重复,那我换个名,我叫哈喽,我的二,看这样行吗?重新再次编一。 说什么呢?还是错的说累。 hello word 二是公共的,应在名为 helloword 二的文件中生命。这什么意思?来,我先把这个错给你接进去啊。 那首先在这,我们从这个结果是不可以就是得到一个结论啊,什么呢?说一个原文件中 可不可以有多个累啊?那这好像是不能啊,但我给你记一句话啊,说什么呢,一个原文件中 可以有多个类,但他是有前提的,你随便写不行啊,他 只能有一个类,被被谁修饰?被帕布雷克修饰。你看啊, 这个类前面是不是都有个修复,叫做帕布雷克,意思就是说你后面这些类你可以随便写,但是被帕布雷克修饰的只能有一个。那现在问题是,那我把哪个帕布雷克去了呀? 那我再记说一个原文件中可以有多个类,只能有一个类被帕布里的修饰,然后 那个原文件的名字必须跟帕布雷克修饰的那个类名。类名 持什么呀?保持一致。那现在就已经确定了,我现在原文件的名字叫做哈喽沃尔。那是不是只有他被帕布里克修饰才可以啊?那也就是说我要想让这个代码对的话,我说把这删了就可以了, 对吧?这是不叫一个元。文件中可以有多个类,但是只有一个类,别怕我这个修饰这玩意不分先后啊,你这个写到后面去也行,这都无所谓的,没有这个前后之分。好吧,那我在这再重新编一下, 重新编译一下 helloword, 扎瓦,回车,你看,编译通过了,编译通过的同时我们看一下我们这个文件夹啊,看一下 春扣的在哪来着。在一盘春扣的。你看,在刚才这个十 七点五十九分的时候,我们生成了,你看,生成了两个克拉斯文件,一个叫做 hello word 点克拉斯,一个叫做 helloword 二点克拉斯。 这是啥意思啊?那是不是相当于你不同的类,虽然写到一个原文件里面了,但是他生成字解码文件的时候,是不会生成自己独立的字解码文件,对吧?这啊,给你转过来, 来,这记在下面啊,说多个类会产生独立的字节码文件,那对于我们来说,在执行 行的时候肯定是自检码文件最重要的,所以说你在执行的时候,你想执行他,你就执行他,你想执行他,你就执行他。所以你执行的时候怎么执行?叫扎瓦 hello word 回车,你看你输出的就是害扎瓦,那如果你要执行 hello word, 二点炸瓦,你看那是不就是 hello 扎瓦,对吧?你各自执行的是各自互相执行,不冲突, 对吧?那在这记一下,说直行的时候,直行 各自独立的字节码文件即可, 对吧?所以一个原文件中可以 存在多个类,那只有一个类呢?可以被 buff 修饰。那到这啊,嗯,我能想到的这些注意事项啊,或者说你可能出现的这个错误,咱们就给你写出来了,大约有十个小点, 那也希望你把这些都挨个练一练,即使你没出错,练一下也没有啥害处。好吧,那到这啊,结束了。
上一次抖音我发布了这一个程序,说这一个程序有三个错,我给大家找出来两个,还有最后一个竟然没有一个人能找出来, 大家看一下哈,到底是什么错?有些同学说,老师你的这一个代码是没有加 package, package 哈,大家看我的这一个 taste 零零一,它在 s r c 下面,并不在等零一下面。 如果说我的代码号是在 deny 一下面的这一个 taste 零零二,那么我们就需要加这一个 package, 就需要加这一个包,那这一个哈程序到底是什么错呢?还没有关注 点赞的朋友哈,帮忙关注点个赞,如果不知道的哈,可以私聊我。这一个错误哈,在实际开发过程当中哈,所有同学哈,百分之百都会遇到过, 那有些同学不知道怎么去解决好了,想知道的哈,就私聊我,好吧,我告诉你们。
来老铁们给看一下这个程序,这个程序它的执行结果为啥一个是零,一个是一呢?不应该是一个是零,一个是二吗?
压缩数据库报错解决方法,首先找下数据库原文件,打开计算机群盘,搜索 mesgt, 找到最新日期的两个文件,选中以后,鼠标右击点压缩, 就会出现这样的报错,接着右击电脑下方空白处,启动任务管理器 s q l 开始的任务,鼠标右击结束掉, 最后再点击压缩到我们想要的位置, 这样就可以了。
加瓦栗色这个坑你踩过吗?很多人都知道 air 是这个工具类,里面封装了对于数字对象的常用操作,比如二分查找拷贝,数字排序,比如操作等非常实用的功能。其中还是绿色方法,可以很便捷的将一个可变参数转化成一个绿色的,但是使用这个方法转化成的绿色不能使用其修改相关的方法。调用它的 ade 木木培养方法会直接抛出异常。通过 gdp 原码可以看到,这里返回的是艾若丽色。需要注意的是,这里的艾若丽色并不是加瓦邮片里面的,这里的艾若丽色是艾若死攻击内的一个内部内 他并没有去实现相关的修改方法,其负累的 abrams, chinaesa 的 a 的铃木肯尼亚默认都是抛出 spot 的 oppo receivedsapp, 这一点在阿里巴巴的加瓦台把手车中也有所提及,驾驶使用时一定要注意。