00:00
来,那咱们继续再往下了,各位啊,再往下的话,我们来看一看,呃,算术运算符,加减乘除求余数啊,还有加加和减减啊,关系运算符,大于大于等于小于小于等于等于等于和不等于啊逻辑运算符,哎,我们都已经说过了,还有负值运算符,我们一块来看看负值运算符好吧,来,那么这边呢,我们点右键,我们新建一个文件,我们叫operator test04点加va。来我们这块啊,写一下啊。Public class。Operator test04,然后呢,我们public static void啊加上去。那么这一块呢,我们一块儿来看一下啊。就是说关于什么呢?关于赋值运算。负值运算符啊。它这个第一点啊,要注意赋值运算符,包括基本赋值。
01:04
运算符和扩展赋值运算符。啊,包括基本复制运算符和扩展复制运算符,也就包括基本的和扩展的啊。基本的啊扩展的,那么首先呢,这个基本赋值运算符是什么,就是这个等号。啊,就是这个等号,然后呢,扩展的赋值运算符。啊,扩展的复制运算符它有哪些呢?什么加等啊减等啊啊乘等啊啊除等啊,求余数等啊对不对?哎,当然还有一些其他的啊,咱们掌握这几个就可以了啊,什么加等啊,减等啊,乘等啊,除等啊,求余数等啊有这么几个符号啊,这么几个符号。那么要注意啊,注意扩展赋值运算符在编写的时候。
02:01
啊,两个符号之间不能有空格啊,不能有空格什么意思,你不能这么干啊,说加等来这加个空格。那你这个肯定就不行了,这个必须得连在一起啊,这样是错误的啊。啊加等这样是正确的啊,正确的聊一下啊聊一下,那么这个赋值运算符其实我们很早以前就用了啊,在讲变量的时候我们就用了,对不对,哎,比如因它I等于十,你看。对不对,或者I呢,再重新赋一个值20。是不是,哎,BYB呢,等于十对吧?哎,B再重新负根20对不对,哎。那么负值运算符啊,它的特点是什么呢?是右边的表达式,先执行将执行完之后的这个结果呀,通过等号的方式给谁呀?哎,这个变量啊,就相当于把这个数据放到盒子里边,就这意思啊,赋值运算符啊,右边赋值运算符等号右边啊,这个右边优先级比较高啊,先执行右边的表达式啊。
03:10
然后将表达式执行结束的结果啊赋值给。啊,或者放到啊,放到左边的盒子当中,盒子当中。啊,其实就是值啊,就是值啊,值就这个,下边这个是什么呀,这是重新值对吧?重新值都是没有任何问题的啊来我们这个程序呢,我也就啊,嗯,没有什么输出效果了啊,我就直接在这里干什么呢?我就直接编译一下,然看看有没有语法上的错误啊,Javac编译operator test04点加va啊走一个好大,看这个程序编译没有任何问题,是不是没有任何问题,这个其实我们之前就已经接触了啊,那这块呢,我就不再多说了,那最主要就是扩展的复值运算符,就是这个加等啊,减等啊,乘等啊,除等啊,求余数等,它是什么意思对吧?哎,我们一起来学一学这个东西啊。
04:09
就是加等啊,这个以以什么呀,就以加等运算符作为代表啊,学习啊学习扩展赋值运算符,你别的呢,其他的这个运算符啊,和加等差不多啊,原理差不多啊,其他的运算符啊,例如这个减等啊,乘等啊,除等啊。求余数等啊,对吧?哎,和加等原理相似啊,原理相似。那么我们来看一看,比如说现在有个特性,K呢等于十,然后K干什么呢?加等什么呀,20。那么这个K呢,现在输出的结果是多少呢?哎,你可以理解成这是追加的意思啊,K变量追加K变量追加什么呀,20啊追加20。
05:04
是这样,所以现在这个K呢,原先是十加等20之后呢,它就变成什么呀,变成了30啊变成30,那么接下来我们再编译一下各位大家编译之呢,我们加va去运行operator test04啊走好,大家看这个呢,结果就是什么呀,30就是30,那它这个加等同于什么呢?等同于什么?等同于这个啊,应该是M,比如说等于十吧,然后呢,M加等什么呀,20。对吧,它其实就相当于M等于M干什么呀,加上20再给M啊。它类似于这个啊,其实加等运算符类似于。下面的表达式。就是先这个变量啊干什么呢?先给它加上什么呀,20算完这个结果之后,再重跟重新再给这个变量啊M啊,重新给这个变量M。啊,这个好像是我第一次用吧。
06:03
是不是第一次用,以前我好像写的都是什么int I等于十加上什么20直接算的对不对啊,或者说我在这c.out点断打印输出啊,我这十干什么呀,十在这直接加上一个什么呀,20啊直接这样的。现在无倍可能就是变量的一个形式啊,M加上20,计算完的结果再付给左边的变量啊,所以现在这个M的值也是多少啊,30是不是?哎,M值也是30。啊,这个M的值也是30,原先M等于十嘛,对不对,哎,十,然后呢,加上这个什么20等于三十三十算完之后给M啊给M是等号,右边先执行,执行的结果通过等号复制给左边的变量,所以这个也是30。来,那么这块呢,我们Java c呢,去编译一下呢,Java去运行好,最后结果是两个30,没有任何疑问啊,标注疑问,那么接下来我们要研究一个问题,要研究一个问题啊,什么问题呢?就是说I加等十和I等于I加十真的是完全一样吗?
07:11
我们要研究一个这样的问题啊,I加等时就是追加累加累计,明白吧,哎,加等加等加等啊,先算加嘛,再等嘛,你看先算加号嘛,然后加号,加的结果之后,哎用等负上值嘛,你看先算加,再是等,所以这个符号在写的时候是加等嘛,加等是不是?哎中间比加空格啊,是加等的意思,就相当于说I变量累计累加啊,累加一个十啊,累加一个十,那么这个I加等十和I等于I加十真的是完全一样的吗?这个答案啊,答案是什么呢?不一样。啊啊,只能说相似啊。其实本质上。并不是完全相同啊,并并不是完全相同,我们一起来看一个例子啊,看一个例子。
08:03
呃,比如说现在呢,我呃有一个啊B呢,等于什么呀,100好,各位告诉我这个有没有问题,根据我们今天所讲的内容来说,这个一点问题都没有对吧?啊一点问题都没有啊,因为这个100啊,没有超出100,没有超出bit类型取值范围对不对,可以直接值,可以直接值,所以呢,这个100呢,就直接给B那输出,其实这个结果就是多少就100对不对,那么接下来呢,我们在这干什么呀?哎,Java c呢,去编译一下我们的程序,Java去运行,好,别运行了,哎编译已经报错了,说呀,已在这个main方法中定义过变量B了啊那我这就是我代码的一个失误了是不是?哎,上面应该有了,那么接下来呢,我们就把这个再改一下吧,啊改一下啊把它改成什么呢?改成X吧,啊,反正命名呢,其实也是有的时候啊,比较麻烦啊,来咱们再来编译啊,不应该报错啊,编译之后呢,接下来我们去运行Java operator test,零四走一个。
09:04
那么这个结果呢,就是100啊,没有任何问题,那你说现在如果我让这个。X。等于X加一。有没有问题,同学们,我现在一啊,咱们得有一个沟通啊,大家分析一下这个式子啊,分析啊这个代码是否能够编译通过。这个代码是否能够编译通过?能通过吗?X是什么类型啊,今天上午讲没讲那六六条规则。讲没讲六条规则?讲没讲六条规则,想想六条规则X是BAT,然后这个BAT类型和一一是int做运算,最后的结果是啥?最后的结果是什么类型?就编译器,编译器检测到什么X加一是什么类型啊,是int类型。
10:03
对吧?Int类型可以直接赋值给BAT类型的变量X吗?能吗?所以这个程序大家看是不是就就就编译就报错了,来报错来走走走走一个。好了,来看不兼容的类型,从int转换到可能有损失。啊,就是这块呢,可能有损失。啊同学我再强调一下啊,您直接在这儿写101没问题。因为编译器能检测出来101这个数字啊,它没有超,没有超这个127的这个范围。那如果说你X加一就不行,为啥?因为X加一它需要运算。所以变译器在这,它其实加法它就并不并不会运算的,变译器只会只是会去检测等号右边的这个表达式,它的一个类型啊,这个类型是int,这个类型是BAT byt和int,哎,现在呢,加加完之后呢,这个编译器简测它是个int类型,因不能四个字节,怎么能赋给这个XX是BAT类型啊,附不上,所以说这边呢就出问题了,那么接下来呢,我们来看一看啊,很诡异的事情,X加等一。
11:14
哎,你说这个行吗。这个可以吗?这个使用扩展赋值运算符可以吗?因为我们现在在研究的一件事是什么事呢?就是说我们加等这种运算符和我们这种。I等于I加十,到底一样不一样?我在这里,我上来我就给了大家一个答案,叫什么呀?叫不一样,只能说是相似,其实本质上并不是完全相同,并不是完全相同。啊,不是完全相同X啊加一我们看这个上边这个编译不能通过下这个能不能能不能编译通过来,我们编译一下。啊,编译一下好,大家看没问题对吧?没问题啊,这个编译通过了,这个答案是可以的啊,可以的,所以得出结论是什么啊,X加等一和X等于X加一不一样。
12:16
啊,不一样。啊,X。加一和X等于A加X等于X加一啊,它是不一样啊,它是不一样。那么这块呢,有一个非常非常重要的一个语法啊,非常重要的一个语法机制啊,很重要的语法机制。语法机制啊,什么机制呢,就是呃,使用扩展赋值运算符的时候。啊,嗯。永远都不会改变运算结果类型啊,永远都不会改变。运算结果类型。
13:03
使用扩展复制运算符数,永远都不会改变运算结果类型,什么意思?你比如说X啊,他现在声明的时候是什么呀。是BAT类型,那么这X这一辈的就就一一定是T类型。啊,什么意思,这这句话是什么意思呢?就是说。Byta X等于100X加等1X自诞生以来啊,自诞生以来是贝塔。类型,那么X变量的类型。永远都是爱的。永远都是白的。不会变,不管后面是多大的数字啊,不管后面是多大的。它不会改变运算结果类型,不改扩展复制运算,不改变运算结果类型。其实啊,可以这样去说啊,其实X加等一。
14:07
等同于X。等于X加一。然后在这个位置,它悄悄的加了一个强制类型转换。严格意义上讲,这个和这个是一样的。啊,和这个是一样的。其实X加等于一和这个X等于X加一是不一样的,各位再强调一下啊,我再强调这个和这个不一样啊,只能说这个和这个是相似的,那你要说这个和谁一样,这个其实和这个是一样的。啊和这个一样的,那什么意思呢,比如说怎么着啊加等什么呀,现在我们把这个X值输出啊,看X值是多少。X值来,我们去编译一下,然后我们去运行一下operator test04走。
15:02
那结果是101啊,结果是101对吧,那现在呢,这个结果是101,那如果说X加等一个什么呢?加一个加一个什么呢?就是比如说这个是呃,199吧,199。各位是不是早就超出类型取值范围了?早就超出贝塔的取值范围了。对吧,那这个行不行呢。啊。这个行不行呢?哎,我说了这个类似于什么呀,X等于什么,X加上什么199,然后我们在前边实际上它的怎么着啊,加了一个强制类型转换符,它加了一个。啊,实际上是这样的,那么这个101是在这个位置上加上199是多少啊,它就是300对吧,300强转转成败的还记不记得是多少啊,咱们之前好像得出过一个结果吧,这个结果是多少啊300。
16:04
砍完前几个字节,三个字节之后,最后是多少啊?哎,如果我没记错的话,应该是44吧。是不是44啊,那这个X是多少啊,现在来我们看一下X多少啊,那Java c呢,去编译,Java去运行来走好大家看44,我们在前面讲过一个这样的例子啊,讲过这样的例子就是300啊,强转的时候最后结果是44,我就不再,呃跟大家说这个为什么出来44了啊,之前说过啊。当然会损失精度啦,对啊,当然会自动损失精度了啊,所以说呢,这个加等啊,减等啊,乘等除等啊,求余数等这几个啊,它比较狠。比较狠呢,什么什么比较狠呢,就是说这些东西啊,嗯,在用的时候它有可能会损失精度。有可能会损失凝度。所以说。怎么说呢,这个符号的出现就是为了方便开发,就是为了方便啊,其实你看就写代码啊,就简单点对不对,加等顺手写了是不是,如果你要是写这种写写成这种的话。
17:04
啊,那可能就代码就稍微多一些啊,就这个意思啊,我不知道大家有没有听明白啊,有没有听明白,总之呢,我想说的是赋值运算符啊,就这么些,一个是等号,就是普通的复制运算符,基本的复制运算符,还有扩展复制运算符,加等,减等,乘等,除等,求余数等,那么这几个呢,嗯,他们都。哎,我重点讲的是这个啊,这这个呢,它其实的类似代码是什么啊,它类似这个啊,就X加等一啊,啊等于X等于X加一是差不多的,但是严格严格意义上来说啊,其实并不并不一样啊,并不一样,在前面我加一个强制性转换符啊,其实和这个是一样的啊,总之大家记住这个结论,这个结论是啥呀,就是使用扩展赋值运算符的时候啊,就这些。啊,永远都不会改变运算结果类型,就是你起初这个X变量是败类型,最后你再怎么折腾,你随便加你就加上11000对吧,哎,你你你你这块这个X它的这个类型还是什么呀,还是butt,只不过在最后的时候啊,哎,你可能算出的结果呀,就有点不太对劲了啊不太确定就结果有可能是一个什么呀,损失精度的一个数据啊损失精度数据,那商代着我们看一看这个叫什么,这个减等,乘等,除等,求余数等行吧,来减等啊,比如说现在呢,有一个in特项X啊等于100,那这边呢,我system.out.line打印输出,比如说X呢加等。
18:31
写到这儿来,X干什么呀?加等十啊,加等100吧,加等100啊,那这个X值是多少对吧?然后X呢,再减等于100对不对?那这个X的值现在是多少?那么X呢,这一块呢,加等减等等啊乘等,比如说啊十。对吧,哎,这边呢,这个X值是多少。啊,然后呢,X除等啊,比如说我我算一下啊,啊,这个加等是100,原先100,那这样是200对吧,这个应该是加等之后是多少啊,二百八减等于100,那就相当于减了100呗,对不对,那X等于X减去100呗。
19:16
嗯,X等于X减去100呗,是不是减完100之后再通过等号的方式付给X,那应该是X是100吧,在这儿是不是好,那么X乘等十是什么意思?就表示X等于X乘以十呗,对吧?哎,乘以十,那X是一百一百乘以是1000啊,所以这个结果X是1000啊。对不对,哎,一千一千这块呢,我们除等30是多少呢。等30是多少?各位。除等30是多少,那这块的话应该是在输出这个X啊,二点打印输出,我们输出X时。啊,333啊,有的是33,有的是三十三三百三十三,有的33啊,这到底是多少呢?其实这个就是X等于什么呀。
20:07
X等于X除以什么呀?是不是哎,X等于X除以30X除以30X是一千一千除以30等于100除以三嘛,100除以三十三十三嘛,是不是?哎,所以X值是多少啊?是33啊,一千一千除以30等于100除以三啊,100除以三十三十三啊,那么现在33减呃,加等,减等,乘等,除等,求余数,等X求余数。等,嗯。除以三除以二吧,除以二各位啊,除以二这是多少?或者除以十。余。输出X,那么这块呢,其实就是X等于什么呀?X对十呗,对十求余数呗,那这个X现在是多少啊?33呗,那33对十,求余数等于多少?300余数是三,所以这块应该是二百一百一千三十三和三。
21:10
啊,所以这个加等减等乘等除等,求余数等,这个大家要要理解啊,怎么去用啊,怎么去用来那么加va c呢,去编译一下operator operator它04点加吧,然后编译之后呢,我们加吧,哎哎呦哎呦哎呦冲了吧,又冲了在XX已经用过了。哎,有上面有X了,下边又再来一个X是吧,这肯定不行是不是,那这边就来来一个Y吧,啊Y改一改啊,哎哟,那改的地方多了去了,是不是行没事,咱慢慢改啊,改上面也行是不是,来这边就改这个吧。嗯,我看一下啊。改这个得了。叭叭一顿写啊,这变量名其实就这几个变量名啊,来我们这边呢,改一下,嗯。
22:00
然后呢,这个呢,给它改一下。这个呢,给它改一下啊。啊,这篇呢,给它改一下好了,那么再来Java c呢,去编译一下,然后Java去运行operator test04轴,最后结果,最后结果看这个啊,那些是200,从200开始啊,二百一百一千三十三和三二百一百一千三十三和三是吧,那这个其实就是我们所说的啊,负值运算符个位啊咱们就说到这儿,等号加等,减等,乘等,除等,求余数等啊求等。
我来说两句