原标题:干货:Java异或运算符的使用方法

做Java这么久,还真的从来没有用到过某些基础的Java知识。今天就遇到了一个:Java的异或运算^,这个小不点“^”就是Java的异或运算符,是不是有点小,再来个大点的看得清楚:

真^假=真  假^真=真  假^假=假  真^真=假

这四个是在网上copy的例子,但它却是说明了Java异或运算的基本法则,那就是:只要两个条件同时为真或假,其结果都为假(这里要注意区别Java的与运算---其为真真为真,假假为假);但仅当两条件中一个为真,另一个为假时,结果为真(感觉有点叛逆哦?不合常理,不走寻常路)。但Java的异或运算还有一个前提那就是它都是以二进制数据为基础进行的运算。也就是说当我们在使用代码中使用到异或运算时,它都会先将两个条件进行转换,转换成二进制数据后,再进行运算,例如:

int a = 4^6;这里的4和6 都是int型数据,在进行运算时,4对应的二进制数为:100(0100);6对应的是:110(0110),这样实际的运算方程是:int a = 0100^0110;此时再来看:00=0;11=0;01=1;00=0;这样运算的结果就是:0010(这是二进制的数据),对应转换成十进制就是2.

这就是Java里面对于异或运算的内部运算机制。

下面看一个例子:

public class TestXOR{

public static void main(String[] args)

{

int i = 15, j = 2;

System.out.println("i ^ j = " + (i ^ j));

}

}

运行结果是:i ^ j = 13.

分析上面程序,i=15转成二进制是1111,j=2转成二进制是0010,根据异或的运算规则得到的是1101,转成十进制就是13.

利用这个规则我们可以灵活运用到某些算法。比如,假定有2K+1个数,其中有2k个相同,需要找出不相同的那个数,比如:2、3、4、4、3、5、6、6、5。我们利用异或运算符就可以这样写:

public class TestXOR{

public static void main(String[] args)

{

int[] array = {2,3,4,4,3,5,6,6,5};

int v = 0;

for (int i = 0;i < array.length;i++) {

v ^= array[i];

}

System.out.println("只出现一次的数是:" + v);

}

}

结果是:只出现一次的数是2.

我们就是巧用异或运算符的规则,得出一个数和0异或还是自己,一个数和自己异或是0的原理。返回搜狐,查看更多

责任编辑:

java异或_干货:Java异或运算符的使用方法相关推荐

  1. 2017年java教材推荐_干货|2017年最新JavaEE课程大纲分享

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Java如今已经是全球编程语言排民第一的语言,运用广泛,前景广阔,现在学习java,将来就业,升职加薪都会有保障.下面分享千锋2017年最新JavaEE课 ...

  2. 怎样用java编写日志_用JAVA写一个日志类程序以供大家学习

    中华网络安全联盟    作者:jacoo    来源:本站原创    时间:2006-4-18 说明: 尽管JAVA类库和其他工具提供了不少的纪录程序运行状态的日志类,我发觉也 不是万能的,有时需要根 ...

  3. 2017年java笔试题_初级java程序员笔试题

    Java认证考试是业界唯一经Sun授权的Java认证,考试内容涉及所有Java相关知识.编程概念及applet开发技巧.下面是小编整理的关于java初级程序员面试题,欢迎大家参考! 一:判断题 1.J ...

  4. java 客户端定时任务_定时任务最简单的3种实现方法(超实用)

    定时任务在实际的开发中特别常见,比如电商平台 30 分钟后自动取消未支付的订单,以及凌晨的数据汇总和备份等,都需要借助定时任务来实现,那么我们本文就来看一下定时任务最简单的几种实现方式. TOP 1: ...

  5. java 分割一个_分割java

    [java]分割字符串工具类,霸气 jdk自带的 java 分割字符串,分割string,可以根据多个条件去分割.比如逗号,分号,逗号或者分号. 比如一个字符串:"abc,def;gh,ij ...

  6. java se7 变化_[转] Java se 7新特性研究(二)

    今天主要研究Java se 7中异常处理的新功能.从今天开始正在将jdk7的说法改为java se 7跟oracle官网的一致 一.新增了try-with-resource 异常声明 在JDK7中只要 ...

  7. java基础知识点_「Java面试题/知识点精华集」20000+字的Java基础知识篇(2020最新版) !

    " 本文已经收录进我的 79K Star 的 Java 开源项目 JavaGuide:https://github.com/Snailclimb/JavaGuide (「Java学习+面试指 ...

  8. java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)

    import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...

  9. java机考_【Java】(机考常用)类集

    类集框架(集合框架)是一个用来代表和操纵集合的统一架构.所有的类集框架都包含如下内容: 接口:是代表类集的抽象数据类型.之所以定义多个接口,是为了以不同的方式操作集合对象. 例如:Collection ...

  10. java核心教程_核心Java教程

    java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...

最新文章

  1. 用计算机打印相片怎么调色,2018年底照片如何使用LOG模式进行调色
  2. C语言中不安全的函数
  3. java邻接图_Java数据结构 - 图(邻接表存储)
  4. MySQL数据类型--与MySQL零距离接触2-6数据表
  5. 怎么运行aws的示例程序_使Spring Boot应用程序在AWS上无服务器运行
  6. python date2num_坚持mdates.date2num
  7. Ubuntu20.4安装YouCompleteMe
  8. css预处理器--sass学习($变量名)
  9. 如何用ESP8266/ESP8285做一个WIFI中继(WiFi信号放大器)
  10. TOUCH  PANEL
  11. Font Awesome 字体符号的使用
  12. 笔记本电脑设置WiFi共享
  13. penetration test:渗透测试
  14. 技术大佬们都是怎么学习的?
  15. ChatGPT让我变成了“超人”-如何提升团队30%效能质量提高100%的阶段性总结报告
  16. 计算机主机通常包括( ) a运算器,计算机主机通常包括()。 A.运算器 B.控制器 C.显示器 D.存储器 此题为多项选择题。...
  17. English--美式发音
  18. pandas 入门(pandas 数据结构介绍)
  19. centos6——初始化脚本
  20. plc c语言做报警,基于PLC编程报警功能块的实现

热门文章

  1. 如何读取 PEM 文件以获取公钥和私钥
  2. 2022最新苹果群控同步投屏电脑/手机控制手机功能使用安装
  3. live555作为RTSP客户端对接大华的某款球机RTSP流时不能预览问题的解决方案
  4. 学习备忘英语单词转载
  5. dbscan聚类python_DBSCAN聚类算法 Python 代码
  6. python3GUI--抖音无水印视频下载工具(附源码)
  7. 一款完全仿照E盾的源码(服务端+代理端+客户端)
  8. 学术论文投稿与返修(Rebuttal)经验分享
  9. webstorm配置vue模板 webstorm快速生成vue模板
  10. java 代理模式详解