Java基础——操作符

来源:互联网 发布:sql server 2005介绍 编辑:程序博客网 时间:2024/05/16 13:45

如果学习过C或者C++,就会发觉Java的操作符与C有很多相似的地方,比如加减乘除赋值的用法。在Java中几乎所有操作符都是只能操作基本类型的,也有例外,比如操作符”=“、”==“、”!=“是可以操作所有的对象(注意是所有的对象)。还有就是String类还支持”+“和”+=“操作符,但是这里的操作符不是用来运算的,而是连接字符串的作用。

优先级:也许大家会忘记操作符的优先级,所有使用操作符的时候一定要注意,不明确的运算顺序表达式或许会给你带来不是你想要的结果。

赋值:"="这个是赋值,”=="这个是判断是否相等。赋值符经常会被用作判定符,这是个要注意点。赋值符的操作是取表达式右边的值,把它复制给表达的左边,右值可以是常量、变量或者表达式,但是左值必须是一个明确的已命名的变量,不能是常量。其实也就是要有一个物理空间存放等号右边的值。因为常量是不可变的,所以不能赋值给常量。而作为对象的赋值的时候要注意一点,对象的赋值其实是把引用赋给对象。

算术操作符要注意的是:整数除法是直接去掉结果的小数位,而不是四舍五入的结果。

System.out.println(3 / 2);//结果是1,不是1.5,也不是2.
自增和自减:和C是差不多的,但是要注意一个奇怪的例子。
int a = 1;a = a++;System.out.println(a);//或许我们期望的打印结果是2,但是真正的打印结果是1.//a++单单这个表达式是先生成值,再执行++自增,然后把自增的结果赋给a。按这个来说应该是2才对吧。//但是上面的代码执行结果就是1,这个是我不是很明白的地方,欢迎大家指点。
后来我想了一下,"a++"的表达式的值(PS:表达式的值不是自增后的值)是1也就是a的原值,再把这个值赋给了a,所以a还是原值,即a=a++表达式的值就是1。也就是相当于下面的运算过程:

int temp = a;a++;a = temp;

好像有点乱,唉,慢慢体会先。

关系操作符:先看个例子

Integer i1 = new Integer(1);Integer i2 = new Integer(1);System.out.println(i1 == i2);//falseSystem.out.println(i1 != i2);//true
其实两个对象的比较,比较的是对象的引用,所以上面的代码i1和i2是两个对象,虽然两个对象的内容是相同的,但是对象的引用是不一样的。所以打印结果是false再到true。

如果要比较两个对象的实际内容是否相等,就要用到object的特殊方法equals()。这个方法不适用基本类型,基本类型使用==和!=就可以了。但是当我们在创建自己的类的时候,判断类的实际内容是否相等时,要想得到自己想要的结果的话,就要重载object类的equals()方法。不然结果可能会是不是我们预料的结果了。

字符串连接符:也许我们期望这个system.out.printl("sum=" + 1+2+3);的打印结果是sum=6,但是结果是sum=123。出现这个结果是因为Java编译器会先将1,2,3转换成String类型,再做字符连接操作。

(PS:本人学疏才浅,如果有错误和问题请多多指教多多包涵!)

0 0
原创粉丝点击