【Java自学】搬砖中年人代码自学之路Lesson 3


        讲真本次课前半部分讲逻辑的时候真的是想起来刚上班偷偷摸摸考在职MBA时候被逻辑题支配的恐惧了。。。

        16年夏天我还是一个刚刚毕业两年的小年轻,当时的工作因为跟高考艺术生相关,所以忙半年闲半年,所以在闲的半年莫名其妙的开始备考在职MBA(跟当年大四了才开始想要考北语的研究生一样),结果自然是没有考过,但是现在还记得当时上班的时候,背后就是直属领导,然后就看她每天忙啊忙啊忙啊忙啊,根本就不知道在忙什么(现在好像也是差不多的情况,只不过自己也变成了小领导,但是我依然还是在摸鱼,嘘),我就买了复习资料在她背后偷偷摸摸做题,结果做一道错一道,那个夏天感觉自己这么多年的逻辑都崩塌了(也比平时抽了更多的烟,所以学习的确是费烟的)

        学代码的时候突然想起了大学时候宿舍的一个沙雕舍友,那真的是人间极品,感觉他大学四年累计出门时间不超过1个月,别人是「必修课选逃,选修课必逃」,他是「不管三七二十一,不让我玩儿游戏我就都逃了」,大四毕业之后听说他因为喜欢玩儿游戏去了游戏公司北漂,后来也没了联络,不过感觉如果一直坚持的话,现在他的游戏水平应该挺不错的了,没准人家已经开始做游戏了也说不定


一、运算符:是一种特殊的符号,用以表示数据的运算、赋值和比较等

        1、算数运算符

                1、(前)++:先自增1,然后运算

                2、(后)++:先运算,然后自增1

                3、(前)- -:先自减1,然后运算

                4、(后)- -:先运算,然后自减1

                5、连接符:+,只能使用在String与其他数据类型变量之间使用 

        2、赋值运算符

                1、符号:=

                        1、当"="两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理

                        2、支持连续赋值

                2、扩展赋值运算符:+=、-+、*=、/+、%=    ==> 不会改变数据本身的数据类型

        3、比较运算符(关系运算符):

                1、比较运算符的运算结果都是boolean型,也就是要么是true,要么是false

                2、比较运算符"=="不能误写成"="

                3、>   <   >=   <=:只能使用在数值类型的数据之间

                4、==和!=:不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间,例如:

Account acct1 = new Account(1000);
Account acct2 = new Account(1000);
boolean b1 = (acct1 == acct2);//false,比较两个Account是不是一个账户
boolean b2 = (acct1 != acct2);//true

        4、逻辑运算符:只能运用于boolean类型变量

                

                1、&:逻辑与;&&:短路与——类似于“且”,开发中推荐使用&&

                        1、相同点1:运算结果相同

                        2、相同点2:当符号左边是true时,二者都会执行符号右边的运算

                        3、不同点1:当符号左边是false时,&继续执行符号右边的运算,&&不再执行符号右边的运算 

                 2、|:逻辑或;||:短路或——类似于”或“,开发中推荐使用||

                        1、相同点1:运算结果相同

                        2、相同点2:当符号左边是false时,二者都会执行符号右边的运算

                        3、不同点1:当符号左边是true时,|继续执行符号右边的运算,||不再执行符号右边的运算

                3、!:逻辑非;

                4、^:逻辑异或——类似于”非“

        5、位运算符「开发中应用比较少」:直接对整数的二进制进行的运算

                1、位运算符操作的都是整型

                2、<<:左移:在一定范围内(移位多了的话,二进制的开头会变成1,也就是负数),每向左移1位,相当于原数字乘2,例如:3 << 2 =12,3*2*2=12

                3、>>:右移:在一定范围内,每向左移1位,相当于原数字除2(被移位的二进制最高位是0,右移后,空缺位补0,最高位是1,空缺位补1)

                4、>>>:无符号右移:被移位二进制最高位无论是0是1,空缺位都用0补

                5、&:与,相当于是在二进制中,把0看作false,1看做true,只有都是1的时候是true,否则都是false,结合起来的数字转换成十进制就能得出结果

                6、|:或,相当于是在二进制中,把0看作false,1看做true,只有有一个是1的时候是true,否则都是false,结合起来的数字转换成十进制就能得出结果

                7、^:异或,相当于是在二进制中,把0看作false,1看做true,只要两个结果不一样就是true,否则都是false,结合起来的数字转换成十进制就能得出结果

                8、~:取反,相当于是在二进制中,把0看作false,1看做true,所有的0变成1,1变成0,包括符号位在内,结合起来的数字转换成十进制就能得出结果

                9、练习:交换两个变量的值

                        1、定义临时变量:更好理解,且不受数据类型限制

                        2、不定义临时变量:节省内存空间,但可能超出存储范围(大部分情况不会超出),且只能应用于数值类型变量

                        3、使用位运算符:m=k^n=(m^n)^n,基本上不怎么用,更复杂,但是解决了超出存储范围的问题,不过仍然只能应用于数值类型变量

        6、三元运算符

                 1、说明:

                        1、条件表达式的结果为布尔类型变量

                        2、根据条件表达式的真或假,决定执行表达式1还是表达式2。如果条件表达式为true,则执行表达式1,如果条件表达式为false,则执行表达式2

                        3、表达式1和表达式2不一定必须是同一个类型,但是必须能归为同一个类型,比如表达式1是1,表达式2是2.0,最后可以用double来进行归类到同一个类型,但是如果表达式1是2,表达式2是“n大”,就无法归类为同一类型,所以编译无法通过

                        4、三元运算符是可以嵌套使用的

                        5、凡是可以使用三元运算符的地方,都可以改写为if- else

                        6、但是可以用if- else的地方,不一定可以改写为三元运算符

                        7、如果程序既可以用三元运算符,也可以用if-else,首先应该选择三元运算符,因为运算符相对来说要更简单,执行效率更高一些

                2、练习:获取三个数的最大值

                        1、逐个进行,先比较其中两个数的最大值

                        2、然后用这个最大值去跟第三个数比较

        7、运算符的优先级

                1、运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序,如下表,上一行优先级总优于下一行

                2、只有单目运算符、三元运算符、赋值运算符是从右向左运算的

                3、实际编程过程中,凡是想早运算的,加上()

                4、另外,实际编程过程中,也不会把很多复杂的运算符同时写在一行代码中,可读性极差

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值