java代码的符号 java编程符号大全及作用( 三 )


按位异或规则如下:
1 ^ 1 = 0;
0 ^ 0 = 0;
1 ^ 0 = 1;
0 ^ 1 = 1;
举例 10 ^ 2
举例 10 ^ -2
代码演示结果的准确性:
异或在代码优化和实际的工作中会经常用到 。后续实战中用到了在详细分析用法, 现在知道进行异或运算即可 。
位左移
将一个操作数进行二进制位往左移,移动后空出来的低位用 0 进行填充 。移除的高位舍去 。高位丢弃 , 低位补零 。
操作数移动的位数
举例说明 102
位左移代码演示:
位右移
将一个操作数进行二进制往右移,移动后,有两种情况,一种有无符号一种是有符号 。也就是最高位为 0 移动后高位补 0,如果最高位(符号位)为 1, 移动后空缺位都为 1.
操作数移动的位数
举例说明 102
对于负数举例 -22 空缺位补 1:
位右移代码演示:
注意这两者的区别 。
无符号位右移
这个是和右移操作上是一致的,但是不管是否最高位(符号位)为 1 ,  空缺位都使用 0 进行补齐 。
操作数移动的位数
举例说明 102
对于负数来说 。这里有点区别,因为对于负值来说,上面其实都是 32 位,为了让大家看起来舒服转换成了对应的 8 位的 。因为无符号位右移会改变正负值 ,  所以 32 位的负值和 8 位的负值是不一致的 。
并且 Java 在处理 byte, short , char 等值进行移位操作前, 会先将类型转换成 int 因为 int 占用 32 位 。
所以 -22 的时候,8 位运算应该是如下:
因为会先转换成 32 位 。所以 32 位的 -2 等于如下:
也就是结果: 1073741823
无符号位右移代码如下:
理解原理 。更能发现问题 。
类型比较运算符
这里说的类型比较是对象的比较 。判断每个定义的变量是否是某个类 。该类可以是(接口、抽象类) 。
语法规则:
boolean = 变量 instanceof 类
举例说明:
【java代码的符号 java编程符号大全及作用】运行查看结果:
这里需要注意:
null 值是没有引用的,所以和任何值都不相等 。
instanceof 比较的是引用类型 ,  不能用于基础类型的比较 。
条件(三目)运算符
三目运算在 Java 中只有一个就是 ? :
三目运算的语法格式:
`布尔表达式 ? 表达式1 : 表达式2`
大部分情况下,对于三目运算是 if 和 else 的简写 。举例说明:
int a = 1; int b = 2;
String msg = ab ? "a 比 b 大" : "a 比 b 小";
System.out.println(msg);
//上面的结果和下面一致
if(ab){
msg = "a 比 b 大java代码的符号!";
}else{
msg = "a 比 b ?。?;
}
//msg 是 "a 比 b ?。?
运算符的优先级
所有的数学运算都是从左向右进行运算的,对于 Java 来说大部分运算也是遵守从左向右的规则 。但是一元运算符 , 赋值运算符和三目运算符例外 。他们是从右向左进行运算 。
运算符的内容告一段落,接下来就是开始逻辑表达式的学习 。教程编写不易 。希望各位大看官点赞收藏加关注 。更多内容大放送 。
java 特殊符号输出绝对基础?稍微深入一点的分析会认为该程序应该打印16java代码的符号 , 因为两个Unicode转义字符每一个在源文件中都需要用6个字符来表示java代码的符号,但是它们只表示字符串中的一个字符 。因此这个字符串应该比它的外表看其来要短10个字符 。如果你运行这个程序 , 就会发现事情远不是这么回事 。它打印的既不是26也不是16,而是2 。理解这个谜题的关键是要知道:Java对在字符串字面常量中的Unicode转义字符没有提供任何特殊处理 。编译器在将程序解析成各种符号之前,先将Unicode转义字符转换成为它们所表示的字符[JLS 3.2] 。因此,程序中的第一个Unicode转义字符将作为一个单字符字符串字面常量("a")的结束引号,而第二个Unicode转义字符将作为另一个单字符字符串字面常量("b")的开始引号 。程序打印的是表达式"a".length()+"b".length(),即2 。

推荐阅读