Java中 ^异或 &相与小常识

学过基本逻辑运算符我们知道 ^ 异或是什么意思

无外乎:相同为零,相异为1。

即 0 ^ 1 = 1,0 ^ 0 =0,1 ^ 1 = 0;

延伸至变量 :a ^ a = 0; a ^ 0 = a;

我们经常在某些交换值的算法中用到

void swap(int &a, int &b){

a = a^b;用a来当作中间桥梁

b = a^b;(即是(a ^ b) ^ b = a ^ 0 = a);//这样即是交换了a和b的值

a = a^b;//同理这个时候变成了 (a ^ b) ^ a = b;

}

所以我们来看这道入门题,参照网上一些大神的解法:

有1~1000这1000个数,放在大小为1001的数组中,只有一个元素值重复,要求不用辅助空间,每个数访问一次,找出重复的元素

你应该不难得到:

public class Yihuo {

public static void main(String[] args) {

int x = 0;

int[] arr = new int[1001];

//解释说明一下,因为是开了一个1001的数组,但是又因为有一个数重复

所以是arr.length -1

for (int i = 0; i < arr.length-1; i++) {

arr[i] = i + 1;

//System.out.println(arr[i]);这里可以自己测试一下

}

arr[arr.length -1] = new Random().nextInt(1000)+1;

//让这个重复的数随机生成

//这里就是让 x ^ i(相当于0^1^2……),

感到疑惑的小伙伴可以打印出来看看 ,你会发现最后相当于x = 0;很神奇

for (int i = 1; i < arr.length-1; i++) {

x = x ^ i;

System.out.println(x);

}

//最后再用这个x ^arr[i],这里就可以找出重复的值

(0 ^ 重复的数时,必然会让这个数显性)

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

x = x^arr[i];

}

System.out.println(x);

}

这里做一个小小记录,如果有不懂的小伙伴,再建议多找找其他技术帖看看,复制粘贴的小伙伴如果不需要注释,需要自行手动删除。另外粘贴时注意括号问题。

这里奉上另一位大神的写法,我也是参照过来的:

https://blog.csdn.net/qq_45784913/article/details/104172655

标签:arr,Java,int,异或,System,重复,length,println

来源: https://blog.csdn.net/wo_yuanchengfeng/article/details/111596342

java 什么叫异或_Java中 ^异或相关推荐

  1. java boolean几个字节_Java中boolean类型到底占用多少个字节?

    1.时间:2017-07-03 07:37:06YuanMxy 2.问题描述:今天在复习java基础的时候发现一小问题,Java中boolean类型到底占用多少个字节? 3.问题解答: (1)什么是b ...

  2. java 基本类型的引用_Java中的基本数据类型与引用数据类型

    一.基本数据类型 byte.short.int.long(整数类型) float.double(浮点数类型) char(字符型) boolean(布尔类型 ) Java数据大多数存放在堆栈中.栈区:存 ...

  3. java常见的报错_Java中常见的错误有哪些?

    原标题:Java中常见的错误有哪些? 1.java.lang.Error 错误.是所有错误的基类,用于标识严重的程序运行问题.这些问题通常描述一些不应被应用程序捕获的反常情况. 原因: 1.对系统所访 ...

  4. java i 线程不安全_java中的++i是线程安全的吗?

    java中的++i是线程安全的吗?为什么?怎么使它线程安全呢? 先说答案: 非线程安全 先说下为什么是非线程安全的? 从Java内存模型说起 Java内存模型规定了所有的便利都存储在主内存中,每个线程 ...

  5. java原始类型和引用类型_Java中的8种原始类型

    java原始类型和引用类型 几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化了. 首先,我将介绍有关Java的 ...

  6. java如何使截取字符串_java中如何截取字符串中的指定一部分

    java中如何截取字符串中的指定一部分 关注:136  答案:4  mip版 解决时间 2021-02-06 13:27 提问者妳涐執唸汰深 2021-02-06 08:56 精选 比如 F:\wor ...

  7. 随机数在java 自旋锁的运用_Java 中自旋锁的实现

    Java中初始是使用mutex互斥锁,因为互斥锁是会线程等待挂起,而对获取锁后的操作时间比较短暂的应用场景来说,这样的锁会让竞争锁的线程不停的park,unpark 的操作,这样的系统的调用性能是非常 ...

  8. java swap函数的包_java中swap函数

    ? ? ? 第1章 第2章 第3章 第4章 java语言概述 Java语言基础 对象与类 ...("swap方法里,a的值是" + a + ";b的值 是" + ...

  9. java截取字符串的一部分_java中如何截取字符串中的指定一部分

    展开全部 java用substring函数截取string中一段字符串 在String中有两个substring()函数,如下: 一:String.substring(int start) 参数: s ...

  10. java int转无符号_Java 中使用无符号整型(unsigned int)的使用方法

    背景 计算机科班出身大多学过离散数学,或者理工类专业也大多学习过 C 或 C++ 语言,从中我们了解到基本类型的整形有 short.int.long 等,还分别有无符号(unsigned)和带符号(s ...

最新文章

  1. AMAB interconnector PL301(二)
  2. HTML5调用手机前置摄像头或后置摄像头拍照,canvas显示,经过Android测试
  3. 字节码编辑器JClassLIb下载教程
  4. Vista系统自带IIS 7.0设置技巧详解
  5. 递归修改子目录及文件的权限
  6. raspberry pi_在Raspberry Pi上使用Mathematica进行高级数学运算
  7. 对美食评语进行情感分析
  8. Spring JDBC 【继承JdbcDaoSupport】
  9. Udacity也弃用React Native了 !
  10. Access2016学习2
  11. 人人有用的零基础理财入门课(水湄物语)
  12. 金蝶云星空API调用实践
  13. 在这里,北上深成为“社科之城”
  14. vue小白的自学笔记
  15. gif动态图如何制作?
  16. linux上cgconfig服务,linux系统调优-Cgroups
  17. IPV6 邻居发现协议(NDP)
  18. 小程序关注公众号的方法总结
  19. 如何写一封稍微像样的求职邮件
  20. PyEcharts 之 仪表盘

热门文章

  1. 模长,方向余弦,方向角、单位向量和方向导数的计算
  2. Hspice中的测量语句(II)
  3. Dorado7之AjaxAction
  4. socket通信问题
  5. 通过阿里接口查询银行卡信息
  6. 终于找到淘口令的坑了
  7. 查看 Visio 是否激活以及激活方法
  8. 鸟哥的linux私房菜中推荐的linux学习网站
  9. 韩立刚计算机网络笔记-第01章 计算机网络详解
  10. 计算理论导引重点知识回顾