以下行的功能基本上是(head-1)MODULO(elements.length),因此当head == 0时,从head减去1将导致最大可能值而不是-1.

head = (head - 1) & (elements.length - 1)

10是元素的有效长度,根据实现,elements.length总是2的幂.如果不是这种情况,则操作无效.

了解其工作原理需要了解位操作.

假设elements.length == 16 == 00010000b并且为了简单起见,值的长度是8位而不是实际的32:

(elements.length – 1)用于获得n位长的位掩码,其中2 ^ n是元素的当前长度. (elements.length – 1)== 15 == 00001111b在这种情况下.

如果头> 0和头< elements.length(给定),然后(head-1)& (elements.length - 1)==(head - 1),因为与1s的AND运不起作用. 如果head == 0,head – 1 == -1 == 11111111b. (二进制补码有符号整数表示法,尽管你也可以将其视为一个简单的整数溢出.)与掩码(head-1)& 00001111b == 11111111b& 00001111b == 00001111b == 15,这是想要的值.

java addfirst_java – ArrayDeque类的addFirst方法相关推荐

  1. java isempty_Java ArrayDeque isEmpty()方法与示例

    java isempty ArrayDeque类isEmpty()方法 (ArrayDeque Class isEmpty() method) isEmpty() Method is availabl ...

  2. java iterator_Java ArrayDeque iterator()方法与示例

    java iterator ArrayDeque类iterator()方法 (ArrayDeque Class iterator() method) iterator() Method is avai ...

  3. Java黑皮书课后题第5章:**5.38(十进制转八进制)编写程序,提示用户输入一个十进制整数,然后显示对应的八进制值。(不要是使用Java的Integer类的任何方法)

    **5.38(十进制转八进制)编写程序,提示用户输入一个十进制整数,然后显示对应的八进制值.(不要是使用Java的Integer类的任何方法) 题目 题目概述 破题 代码 运行示例 题目 题目概述 * ...

  4. java的ThreadLocal类的使用方法

    java的ThreadLocal类的使用方法,ThreadLocal是一个支持泛型的类,用在多线程中用于防止并发冲突问题. 比如以下的一个样例,就是用于线程添加1,可是相互不冲突 package co ...

  5. Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释

    Java中String类的concat方法 在了解concat()之前,首先需要明确的是String的两点特殊性. 长度不可变 值不可变 这两点从源码中对String的声明可以体现: private ...

  6. JAVA中console方法怎么用,java的Console类的使用方法及实例

    java的Console类的使用方法及实例 JDK 6中提供了java.io.Console类专用来访问基于字符的控制台设备.如果你的Java程序要与Windows下的cmd或者Linux下的Term ...

  7. Java 中Date类getTime()的方法

    Java 中Date类getTime()的方法 1.getTime() /**Returns the number of milliseconds since January 1, 1970, 00: ...

  8. (JAVA)String类之比较方法

    /* 字符串: 一.概述:1.字符串在JAVA中,使用""表示2.java.lang.String类3.只要写""就是字符串对象.不需要new二.空参构造器ne ...

  9. JAVA中Math类的random()方法使用

    使用了Math类的random()方法, 由于Math类是出于java.lang包(Package),故使用时不必import这个包. 此外本例还使用了移位运算符 /*** 使用了Math类的rand ...

最新文章

  1. 010——VUE中使用lodash库减少watch对后台请求的压力
  2. DFS Tempter of the Bone
  3. api接口怎么写_面向声明式API编程(DAP)
  4. code1167 树网的核
  5. 使用增强回归树和随机森林模型进行溪流水质预测--文献阅读
  6. 软件测试测试 python_Python测试简介
  7. Silverlight实例教程 - Validation用户提交数据验证捕获
  8. Linux命令第一篇
  9. 严重抗议:被砍了个尾巴
  10. 改 主机名 后 虚拟机 不能启动
  11. 解决 谷歌chrome浏览器开启麦克风
  12. 深入浅出AT命令(5)-短信命令
  13. UG NX二次开发(C#)-曲线-NXOpen.Curve初探
  14. mysql多次登录失败控制,Mysql登录失败多次锁定配置
  15. 小白攻略(一):数学建模是什么,为什么,怎样做?
  16. 远程破解Linux操作系统密码
  17. docker快速安装可道云
  18. docker-Alpine添加字体支持功能
  19. 取原始数组中的指定数据push新数组
  20. 编程之美 1.2 中国象棋将帅问题

热门文章

  1. gradle 插件 自定义_Gradle自定义插件
  2. vaadin_在Vaadin和JSF之间选择
  3. java 模块化osgi_OSGi简介–模块化Java
  4. Netty:另一种Web(套接字)服务器
  5. JVMTI标记如何影响GC暂停
  6. 我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问
  7. 增加堆大小–谨防眼镜蛇效应
  8. 使用JavaCV进行手和手指检测
  9. 从Java程序生成QR码图像
  10. 从Java 8启动项目拼图?