一.位运算符操作的都是整数类型

1.<<:左移,在一定范围内向左移动n位,相当于乘以2的n次幂

  左移不管是正数还是负数,都是在后面添0;

2.>>:右移,在一定范围内向右移动n位,相当于除以2的n次幂,

   右移的话,正数移动n位,在左边补n位的0,负数移动n位的话,在左边补上n位的1;

3.无符号右移:>>>,无论是正数还是负数,空缺位都是用0来补。

4.异或:^:两者不相同则为1,两者相同则为0。 A=(A^B)^B

二.|和||、&和&&的区别

1.首先是|和||

共同点:只要有任意一边的是true,那么结果就是true,当两边都是false的时候,结果是false

不同点:|是两边都会运算,然后来判断结果;||是先运算左边的式子,如果为true,那么直接返回结果为true,如果左边的式子不为true,再去运算右边式子

2.&和&&

相同点:运算符的两边都是true的时候,结果才是true;

不同点:&是两边都会运算,然后来判断结果;&&是先运算左边的式子,如果是false,直接返回结果为false,否则再去运算右边的式子,如果是true结果就是true,如果是false,结果就是false;

三. 练习

题目:交换两个变量的值

方式一:定义临时变量

  int temp = num1;

  num1 = num2;

  num2 = temp;

方式二:不能定义临时变量

  就像是在一片大海上,有两块浮冰,每块浮冰只能让一个人站立,现在每块浮冰上面站着一个人,现在想要让他们交换一下位置。可以先让A骑到B 的头上,然后让A在踏上之前B站立的浮冰上,此时B在踏上刚才A站立的浮冰上。

  num1 = num1+num2;

  num2 = num1-num2;

  num1 = num1-num2;

优点:可以不用定义临时变量;

缺点:num1+num2可能超出数值范围、只适用于数值型

方式三:使用位运算符

  因为A=(A^B)^B,所以

  num1 = num1^num2;

  num2 = num1^num2;

  num1 = num1^num2;

缺点:同样是只适用于数值型。

  

  

位运算符、|和||、&和&&的区别的更多相关文章

  1. Java的算数运算符、关系运算符、逻辑运算符、位运算符

    JAVA的运算符,分为四类: 算数运算符.关系运算符.逻辑运算符.位运算符 算数运算符(9):+  -  *  /  %  ++  -- 关系运算符(6):==  !=  >  >=  & ...

  2. java入门学习(十一)逻辑运算符和位运算符

    请关注我的博客:www.taomaipin.com 家里有急事 暂停了几天,抱歉,现在呢开始说说java的运算语句和运算符 如果想利用java的运算语句 那么就离不开java的运算符,前面第九章讲了j ...

  3. java注释 命名 数据类型 基本类型转换 位运算符 逻辑运算符 三目运算符

    一.java注释 1.单行注释  //注释内容 2.多行注释 /*注释内容*/ 3.文档注释(可用javadoc工具生成api文档,不过我还没试过)/**文档注释*/,文档注释可以在使用的时候看见注释 ...

  4. (一)《Java编程思想》学习——按位运算符、移位运算符

    (第三章) (一)按位运算符 按位逻辑运算符有: “与”(AND)        & 1&1=1;1&0=0;0&0=0 “或”(OR) | 1|1=1;1|0=1;0 ...

  5. 2.&与&&以及位运算符。

    这是单独的一块,因为一条讲不清楚(虽然内容也不够一篇),而且我之前也没好好弄清楚,所以有必要写出来. 说位运算符也是从&与&&(|与||类似)之间的区别讲起的.事实上,对于两个 ...

  6. js按位运算符及其妙用

    大多数语言都提供了按位运算符,恰当的使用按位运算符有时候会取得的很好的效果. 在我看来按位运算符应该有7个: 1.& 按位与 &是二元运算符,它以特定的方式的方式组合操作数中对应的位, ...

  7. 逻辑运算符、位运算符、三元运算符、判断语句(if,switch)

    逻辑运算符 逻辑与 &:由false则false 逻辑或 |:有true则true 逻辑异或 ^:相同为false,不同为true 逻辑非 !:非false则true,非true则false ...

  8. 恶补java基础 位运算符

    以前不知道在哪看过别人写博客里的一句话  “越学的深入觉得自己会的东西越少”.最近研究了一下java的基础算法  hash表 被一些位运算符搞的头都大了 决心花一些时间研究一下以前一直觉得没用的东西! ...

  9. java入门---运算符&算术运算符&自增自减运算符&关系运算符&位运算符

        计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 ...

随机推荐

  1. getRequestDispatcher 中请求转发和请求包含的使用说明

    getRequestDispatcher() getRequestDispatcher() 包含两个方法,分别是请求转发和请求包含. RequestDispatcher rd = request.ge ...

  2. [学习笔记] SpringBoot 之 Helloworld

    创建项目 IDEA / File / New / Project / Spring Initalizr / Next Group: com.wu 公司官网域名反写 Artifact: hellowor ...

  3. linux安全篇:禁止频繁访问的ip访问nginx

    实验环境 版本:redhat6.5ip:172.16.1.100,172.16.10软件:nginx 172.16.1.10部署nginx [root@localhost tools]# lsngin ...

  4. js对象数组多字段排序

    来源:js对象数组按照多个字段进行排序 一.数组排序 Array.sort()方法可以传入一个函数作为参数,然后依据该函数的逻辑,进行数组的排序. 一般用法:(数组元素从小大进行排序) var a = ...

  5. HashMap原理及源码分析

    HashMap 原理及源码分析 1. 存储结构 HashMap 内部是由 Node 类型的数组实现的.Node 包含着键值对,内部有四个字段,从 next 字段我们可以看出,Node 是一个链表.即数 ...

  6. C# - 逆变的具体应用场景

    前言 早期在学习泛型的协变与逆变时,网上的文章讲解.例子算是能看懂,但关于逆变的具体应用场景这方面的知识,我并没有深刻的认识. 本文将在具体的场景下,从泛型接口设计的角度出发,逐步探讨逆变的作用,以及 ...

  7. 【Java常用类】LocalDate、LocalTime、LocalDateTime

    LocalDate.LocalTime.LocalDateTime 说明 JDK 1.0中包含了 一个java.util.Date类,但是它的大多数方法已经在JDK 1.1引入Calendar类之后被 ...

  8. 【PTA】5-1 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出。

    5-1 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出.要求定义和调用函数set_grade(stu, n),其功能是根据结构数组stu中存放的学生的百分制成绩scor ...

  9. Java实现二叉搜索树的插入、删除

    前置知识 二叉树的结构 public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() { } TreeNode( ...

  10. leetcode 921. 使括号有效的最少添加

    问题描述 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效. 从形式上讲,只有满足下面几点之一,括号字符 ...