java中的操作符与其他主流语言的操作符基本类似,所以如果你有其他语言的编程经验,那么这里只需要了解一下不同点就是了。
我不太建议代码中使用大量的优先级操作,太复杂的分几步走,稍微复杂的加括号,我一直觉得很多时候大项目需要的不是说代码性能是第一位的,而是可读性是第一位的,如果别人看懂你的代码要1个月,那我觉得可以考虑重写或者翻新了。这可能也是框架大行其道的一个主要原因。
在java中有一种数据是特例:基本类型,java是面向对象语言,所以大部分的对象都是靠引用来传递的,唯独基本类型除外,比如
int a=4;
int b=6; a=b; System.out.println(a); a=3; System.out.println(a); System.out.println(b);
这时候的输出应该是:6,3,6,因为基本类型存储的是实际值而不是指向一个对象的引用,所以当为其赋值的时候,是直接讲一个地方的内容复制到了另一个地方了,所以a的操作不会对b造成任何影响。
java中很多操作符刚开始可能使用场景决定了你不太可能考虑用到它,不如按位操作,不过有一种场景因为工作的缘故发现及其好用,比如如下场景:
一个博客的功能如下:可以被评论,不可以被评论;可以分享,不可以分享;可以“赞”,不可以“赞”;那么设计表的时候我们习惯上来3个字段表示三个功能,通过不同数值表示不同状态,但是,这样造成的后果也是显而易见的,如果增加了其他的功能,那么就需要做表的变更,这个有点不能接受,那么这时候我们试想一下,我们只需要表示的是一些非0即1的状态,那么习惯上我们是不是就考虑到了我们熟悉的0101的东西?于是他还有一个好处是可以表示同时拥有多种状态,所以其实我们考虑使用一个字段,通过按位操作表示多种不同的状态,比如第一位表示评论,第二位表示分享,那么11表示可评论,可分享,则用10进制表示为:3,如果按位于为3则表示两种状态,如此等等了。
详细说明参见:http://guoba6688-sina-com.iteye.com/blog/1670732
java中的102可以表示为1.02e2d,表示1.02的10的2次方,后边的d表示结果的类型,即整形。
java中的舍入使用的是java.lang.Math中的round()方法。
java中的字节自动提升是一个陷阱不过这个陷阱在IDE下基本不存在,只存在于变态面试题中
比如:
java表达式中数据类型的自动提升( + - * / %) 首先看表达式有没有字符串的类型,如果有字符串的类型,类型自动提升为字符串类型 然后看有没有没double,float,long类型,如果都没有的话,自定提升为int类型 byte ba = 1; byte bb = 2; byte result = ba + bb;