《JAVA编程思想》笔记-操作符&控制执行流程

此书第三章和第四章内容

其实程序设计语言都遵循类似的操作符规则来设计操作符,故基本的内容不用多说,将一些java操作符的特性吧。

操作符

左自加和右自加的区别

python中是没有自加操作的,所以这也算java一特性吧。

  • ++i:左自加,将内存中的变量加一,然后把变量放到寄存器中参与运算,在你的程序中是放到寄存器中被打印出来。
  • i++:右自加,把内存中的变量放到寄存器中运算,运算完再把内存中的变量加一。

逻辑操作符

主要讲一下短路问题,其实就是位操作。a&b和a&&b是有区别的,前者不管表达式a的结果为多少,仍要计算b的值,然后作与运算,而a&&b则不同,若表达式a为true,则表达b将不会被执行。这可以用来实现默认参数(java中没有默认参数)。

关系操作符

主要说 判等
一般的编程语言使用双等号来进行判等操作(javascript则是===),java也不例外,java中的==返回true/false。判断的对象是栈中的值,具体来说就是:

  • 基本数据类型:直接比较值大大小
  • 引用类型:比较引用地址
    所以,对于对象的判等,需要用到equals()方法,这个方法继承自Object类,需要自己重写。

对于基本数据类型,有个概念要说一下常量池,java维护一个常量池(类似单例模式实现),存储大于等于-128并且小于等于127的数,故用Intege实例化这个范围内的数的对象,其实只是从常量池中取出了已经存在的对象的引用,而没有真正初始化的过程。

位操作符

不太推荐在java中使用位操作符,可读性较差(当然在处理大数据问题时位操作是不错的考虑),不过C++很喜欢出这种题,有兴趣可以研究一下。java中一般也就是面试可能问到:乘法最有效的实现方式(化成2的次方来考虑),当然是位操作了,注意溢出等问题。

类型转换(基本类型)

csapp上有讨论过这个问题,重点考虑“长”类型到“短”类型的转换。

  • (提升)长到短:例如short到int,int到long,可以不进行显示的类型转换,自动进行多余字节的填充。
  • (截断)短到长:需要显示的强制类型转换,毕竟32位的int变成了16位的short,有16位被活生生地扔掉了,很不安全!

还有个舍入问题:注意是四舍五入、向上取整还是向下取整!csapp中有比此书更为专业详细的讲解。

控制执行流程

逗号表达式

没什么意思,语句都执行,但是传值的时候只传后面一个
如:

int a,b,c;
a = b = 1 + 2, c = 2;

执行完后a为2,b为3,c为2。

foreach

jdk5起开始出现,用于数组和容器的更简洁的for语法,语法如

for(type a : ACollection)

label

用于跳转
少用为好,容易使代码混乱

switch

多路选择,仅对整数值有效,注意break和default

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值