详解Java的位操作符

作者:mrr 时间:2023-06-24 05:31:14 

Java的位操作符用来操作整数基本数据类型中的单个“比特”(bit),即代进制位。而我们知道比特就是0和1,那么,位操作就是对这些数据进行基本的操作。如果基本类型是char、byte或者short类型的数值进行移位处理,那么会转化成int类型,再进行移位的处理

Java的按位操作符

按位操作符会对两个参数对应的位执行布尔代数运算,并最终生成一个结果。这个操作符有与(&)、非(~)、或(|)、异或(^)。我们知道单位“比特”(bit),即代进制位,都是0和1,异或(^)可能比较复杂点,两个操作数的位中,相同则结果为0,不同则结果为1。那么最基本的逻辑就像下面这个样子。


1&1 → 1
1&0 → 0
~1 → 0
~0 → 1
1|1 → 1
1|0 → 1
1^0 → 1  (1为01,0为00,那么结果就是01,还是1)
1^1 → 0

Java的移位操作符

Java的移位操作符无非就是对二进制进行位移。

进行<<就是左移,也就是所有所有二进制往左边移动一个位,0010 0000 << 1 等于0100 0000

进行>>右移,也就是所有所有二进制往右边移动一个位,0010 0000 >> 1 等于0001 0000 。

可以试试下面的例子,整数型的也是变成二进制来计算:


class Test{
  public static void main(String[] args){
  int numInt1 = 3;
  int numInt2 = -3;
  System.out.println(numInt1<<1);
  System.out.println(numInt1>>1);
System.out.println(numInt2<<1);
System.out.println(numInt2>>1);

}
}
/* 输出的结果如下(www.breakyizhan.com)
6 ---> 0000 0011<<1 , 变为0000 0110
1 ---> 0000 0011>>1 , 变为0000 0001...1后面的1被顶出去了,所以结果为1
-6 --> 1111 1101<<1 , 变为1111 1010 取反+1= 0000 0110  -6
-2 --> 1111 1101>>1 , 变为1111 1110 取反+1= 0000 0010  -2
*/

Java的三元操作符if-else

三元操作符也叫做条件操作符,用来做简单的逻辑判断是最好不过的,因为其简洁高效,当然,也可以用if-else代替三元操作符,但是,三元操作符最终也会生成一个值。三元操作符表达式如下:


boolean-exp? exp0: exp1

如果boolean-exp(布尔表达式)的结果为true,就计算exp0这个表达式的值不计算exp1的值,如果为false,就计算后面的表达式exp1这个表达式的值不计算前面exp0的值,然后返回计算结果的值。可以来看一下详细的例子:


public class sanyuantest{
 static int changeNo(int 1){
 return i < 5 ? i*100:i*10;
 }
public static void main(String[] args){
println(changeNo(3));
println(changeNo(6));
}
}
/*输出的结果如下(www.breakyizhan.com)
300
60
*/

上面这段代码也可以用if-else来实现,当然,有部分人认为if-else可以让代码看起来逻辑更加清晰。但是用三元表达式显得代码更加简洁。

总结

以上所述是小编给大家介绍的Java的位操作符网站的支持!

来源:http://www.breakyizhan.com/JavaMind34.html

标签:java,位,操作符
0
投稿

猜你喜欢

  • JavaWeb后台购物车类实现代码详解

    2023-11-09 23:11:26
  • Java泛型<T> T与T的使用方法详解

    2021-07-12 10:58:42
  • Android Studio finish()方法的使用与解决app点击“返回”(直接退出)

    2022-07-31 09:37:10
  • Java程序控制逻辑—流程控制

    2023-08-28 01:51:18
  • 可视化Swing中JTable控件绑定SQL数据源的两种方法深入解析

    2023-11-28 19:13:58
  • 详解Java Streams 中的异常处理

    2021-09-03 11:26:11
  • Android USB转串口通信开发实例详解

    2022-01-05 15:28:17
  • java使用poi生成excel的步骤

    2021-08-25 07:03:45
  • 浅谈log4j的rootLogger及其他坑爹的地方

    2023-07-31 02:23:14
  • Unity3D 计时器的实现代码(三种写法总结)

    2022-02-10 08:51:08
  • Java实现石头剪刀布小游戏

    2023-02-25 22:41:29
  • C#基于TimeSpan实现倒计时效果的方法

    2021-10-19 00:06:04
  • Android键盘显示与隐藏代码

    2021-06-29 22:15:58
  • MyBatis一二级缓存

    2021-07-03 13:01:59
  • C++ 线程(串行 并行 同步 异步)详解

    2023-07-18 18:09:43
  • Android实现可复用的筛选页面

    2023-02-23 09:41:27
  • c# 如何实现图片压缩

    2022-02-10 00:46:31
  • springboot如何通过@PropertySource加载自定义yml文件

    2022-08-06 19:42:56
  • Linux下动静态库的打包与使用指南(C/C++)

    2023-06-21 20:22:11
  • Android 自定义弹性ListView控件实例代码(三种方法)

    2022-04-14 15:00:33
  • asp之家 软件编程 m.aspxhome.com