原语是用Java签名的,这与它们在内存/传输中的表示方式无关-字节仅为8位,是否将其解释为有符号范围取决于您。没有魔法标志可以说“这是签名的”或“这是未签名的”。

在对原语进行签名时,Java编译器将阻止您将大于+127的值分配给一个字节(或低于-128)。但是,没有什么可以阻止您为了实现这一点而降低int(或Short):int i = 200; // 0000 0000 0000 0000 0000 0000 1100 1000 (200)byte b = (byte) 200;

// 1100 1000 (-56 by Java specification, 200 by convention)/*

* Will print a negative int -56 because upcasting byte to int does

* so called "sign extension" which yields those bits:

* 1111 1111 1111 1111 1111 1111 1100 1000 (-56)

*

* But you could still choose to interpret this as +200.

*/System.out.println(b); // "-56"/*

* Will print a positive int 200 because bitwise AND with 0xFF will

* zero all the 24 most significant bits that:

* a) were added during upcasting to int which took place silently

*    just before evaluating the bitwise AND operator.

*    So the `b & 0xFF` is equivalent with `((int) b) & 0xFF`.

* b) were set to 1s because of "sign extension" during the upcasting

*

* 1111 1111 1111 1111 1111 1111 1100 1000 (the int)

* &

* 0000 0000 0000 0000 0000 0000 1111 1111 (the 0xFF)

* =======================================

* 0000 0000 0000 0000 0000 0000 1100 1000 (200)

*/System.out.println(b & 0xFF); // "200"/*

* You would typically do this *within* the method that expected an

* unsigned byte and the advantage is you apply `0xFF` only once

* and than you use the `unsignedByte` variable in all your bitwise

* operations.

*

* You could use any integer type longer than `byte` for the `unsignedByte` variable,

* i.e. `short`, `int`, `long` and even `char`, but during bitwise operations

* it would get casted to `int` anyway.

*/void printUnsignedByte(byte b) {

int unsignedByte = b & 0xFF;

System.out.println(unsignedByte); // "200"}

无符号 byte java_我们能用Java做无符号字节吗?相关推荐

  1. 一件代发分销商城系统怎么规避拼多多、淘宝、抖店对无货源的限制,还能继续做无货源代发

    今年以来,淘宝.拼多多.抖音都在打压非库存电商.打压持续了很长时间,平台不断出台一系列监控缺货电商的新政策.让我们谈谈这三个平台的作用: 第一个是抖音.抖音发布的规则最多.基本上,细则每两个月更新一次 ...

  2. 无符号 byte java_java byte的无符号表示

    1. 将一个整数转换为字节(如将整数255转换为字节) byte b1 = (byte)255 输出: b1 = -1 2. 将字节转换为无符号数(如将-1转换为无符号数) byte b1 = -1 ...

  3. mongodb连接java_如何从Java EE无状态应用程序连接到MongoDB

    mongodb连接java 在本文中,我将介绍如何从无状态Java EE应用程序连接到MongoDB,以利用与MongoDB Java驱动程序提供的数据库的内置连接池. 如果您开发的REST API对 ...

  4. JAVA 中无锁的线程安全整数 AtomicInteger介绍和使用

    转载自 http://blog.csdn.net/bigtree_3721/article/details/51296064 JAVA 中无锁的线程安全整数 AtomicInteger,一个提供原子操 ...

  5. 如何从Java EE无状态应用程序连接到MongoDB

    在本文中,我将介绍如何从无状态Java EE应用程序连接到MongoDB,以利用与MongoDB Java驱动程序提供的数据库的内置连接池. 如果您开发的REST API对MongoDB执行操作,则可 ...

  6. Spring MVC之基于java config无xml配置的web应用构建

    更多spring相关博文参考: spring.hhui.top 前一篇博文讲了SpringMVC+web.xml的方式创建web应用,用过SpringBoot的童鞋都知道,早就没有xml什么事情了,其 ...

  7. java 且 或 符号_Java 、、|、||、^、、、~、等运算符

    &(按位与) 运算规则:两个为真才为真 (1&1=1 , 1&0=0 , 0&1=0 , 0&0=0) 例:3&5=1 3的二进制位是0000 0011 ...

  8. 如何使用Java获取货币符号?

    1. 前言 最近做了一个支付相关的需求,要求在收银台页面显示商品的价格时带上货币符号¥,类似下图中的格式: 最初我是用的下面这样的代码: System.out.println(Currency.get ...

  9. 纯C语言开发无java、无dex的安卓apk---2022笔记

    纯C语言开发的安卓应用,分为 : 1). 无GUI的 command line tool,比如linux终端中的 clear.ls.mkdir.cp等指令 2). 带GUI的 activity 应用 ...

最新文章

  1. java arrays.sort() c_正面刚算法-Java中Arrays.sort()(一)
  2. 2017 计蒜之道 初赛 第五场 B. UCloud 的安全秘钥(简单)
  3. 在MSBuild.exe中使用条件编译(Conditional Compile)
  4. 计算机用户删除 cmd,用命令行删XP中的用户。除administrator外
  5. flutter 判断字符创_Flutter 字符串与JSON相互转化
  6. 正则表达式--密码复杂度验证--必须包含大写、小写、数字、特殊字符中的至少三项
  7. HarmonyOS之常用组件TextField的功能和使用
  8. 大数据项目开发案例_大数据分析技术——项目案例1(猫眼电影数据分析上)...
  9. sql SET DATEFORMAT对日期处理的影响
  10. 转://Linux Multipath多路径配置与使用案例
  11. 机器视觉用c还是python_机器视觉_opencv-python环境搭建
  12. PLC编程技术的发展及应用
  13. php读取excel文件_在PHP中读取Excel文件
  14. 基于Excel的实验室设备管理系统设计
  15. 十大最佳外国Android游戏下载平台
  16. Android:开发中,代码被横线划掉是什么意思
  17. 小白多久可以学会python?
  18. 一文聊透对象在JVM中的内存布局,以及内存对齐和压缩指针的原理及应用
  19. Matlab作图后的各种调整方法——线条、坐标、标题、图例
  20. 示波器的使用以及基本原理

热门文章

  1. H3C交换机常用巡检命令
  2. SWFTools pdf2swf 参数详解
  3. 也许MVC不该重写Url格式?
  4. 毕业生求职“葵花宝典”之实习提前转正秘笈
  5. avcodec_send_packet()函数与avcodec_receive_frame()函数
  6. C++协程库coroutine使用指南
  7. Android Screen Monitor抓取模拟器与真机界面
  8. VS2010配置QT5.5.0开发环境
  9. vtbl 什么时候被改写
  10. WireShark过滤器选项