java操作符
java操作符
关于java操作符的一些东西,由于技术有限,如有错误还请指出,不胜感激。
欢迎转载,转载烦请注明出处,谢谢。
https://www.cnblogs.com/sx-wuyj/p/11177257.html
“+、-、*、/”四则运算都是从小学就开始学起的,在java当中同样有这四种简单的运算符含义是和数学当中一样的,这几种运算符除了"+"还可以操作String类型,其他的只能操作基本类型的数据。另外需要特别注意的就是"="、"=="、"!="这些。
-
"=" : 在java语言当中,“=”是赋值的含义。将左边的值赋给右边;比如
int a = 2;
就是讲int类型的2赋值给a。 -
"" :""是比较运算符,一定要注意的是,"=="是比较左右两边的值是否相等,如果相等返回true,不等返回false。比如
int a = 2; int b = 3; System.out.println(a == b);
以上代码最终输出的是false。也就是不等。还有一种情况是以下情况:
String a = "2"; String b = "2"; System.out.println( a == b);
那么可以想一下以上代码,输出结果是什么呢?输的结果是false,因为String是引用类型,使用"=="比较的是他们两个对象在内存中的地址值,因为是两个对象,地址值肯定不一样的。再看另一种情况:
String a = "2"; String b = a; System.out.println( a == b);
如上代码,输出为true,为什么呢?因为在第二行 b = a;中并没有创建新的对象,只不过是将a在内存中的地址值赋给了b,所以比较的是同一个地址值,那么肯定就为true。这里可能会有人误解一点就是将 2 赋值给了b,这里并不是这样了,赋的值是a的地址值,也就是引用。
-
优先级
借用书中的代码:
int x = 1; int y = 2; int z = 3; int a = x + y - 2 / 2 + z; int b = x + (y - 2) / (2 + z); System.out.println("a = " + a + "b=" + b);
输出结果为: a = 5 b = 1
以上代码只是括号的区别,其他都一样,但是运算结果完全不同,由此可以看出在java中括号优先级大于乘除,乘除大于加减,其次从左至右依次运算。最终将计算结果赋值与左边的变量。
还有一点需要说明在输出语句中"+"也出现了,在这种上下文环境中,"+"意味着连接符,不做运算,起拼接作用,当编译器遇到String后面跟着一个"+"后,而之后有跟着一个非String类型的元素时,就会尝试将这个元素转为String类型。 -
算术操作符
这里主要说一下取模运算:- 取模(%) : 取模就是也就是我们数学中的取余,但是java当中使用取模运算符后得到就是余数,不会进行四舍五入,直接舍弃掉整数外的部分。比如
int a = 3 % 2
那么a的值就为1。 - 还有一个需要注意的就是
a += 4;
和a = a + 4
除了写法不同其余是完全一样的,其余四则 运算都一样,前者代码可读性比较差,后者更容易让别人看懂。
- 取模(%) : 取模就是也就是我们数学中的取余,但是java当中使用取模运算符后得到就是余数,不会进行四舍五入,直接舍弃掉整数外的部分。比如
-
逻辑操作符
- 与、或、非(&、|、!)
- 与(&): 两边为true才为true,一边为false则为false。
- 或(|): 其中一边为true或false则为true,两边都为true或false则整体为false。
- 非(!): 这个就比较好理解了,通常是 != 为不等于,还有另一个就是取反。
另外需要注意的是,&和&&、|和|| 是不一样的,虽然结果一样,但是会有一个短路的情况,就是一旦可以确定表达式的值,那么之后的表达式就不会执行了。也就是短路。
- 与、或、非(&、|、!)
-