• centos 6.5
  • CDH 5.15
  • JDK 1.8
  • hbase 1.2

简介

不管什么数据,计算机最终存储的是二进制的0和1,每个二进制占1位(bit);

因为最早是老美发明的计算机,英语的所有字符使用8位二进制就能都表征了,所以老美规定了8位等于1字节(byte); 即是最早的ASCII编码;

比如字母a,占用1字节,即8个位的二进制(01),ASCII编码就是0110 0001,二进制对人类不友好,于是用数学里的进制转换,将二进制转为十进制的97,十六进制的0x61;

byte类型

JAVA中提供了专门的byte类型,用来表示占1字节的数据,也就是ASCII码里的所有数据;

8位可表征的数字范围是-128 ~ +127,超过这个范围会报错;
1个字节只能表征1个字母,2个字母需要2个字节;

public class Test
{public static void main(String[] args){byte byteB1 = 127;byte byteB2 = 'a';  //# 只能有单引号,双引号是字符串;System.out.print(byteB1); //# 127System.out.print(byteB2); //# 97 (a的ASCII码的十进制)System.out.print(byteToHex(byteB2)); //# 61 (a的ASCII码的十六进制)//# 强制类型转换,int(32位) 转 byte(8位),高低转低位,会发生精度丢失byte byteB3 = (byte) 18;System.out.print(byteB3); //# 18}/**# byte 类型转为 十六进制@ param b : byte类型的变量或数据*/public static String byteToHex(byte b){String hex = Integer.toHexString(b & 0xFF);if(hex.length() < 2){hex = "0" + hex;}return hex;}
}

编译运行

$ javac Test.java
$ java Test

byte类型有长度限制,不能表征复杂的数据;
使用byte[]类型,没有长度限制;

byte[] 类型

JAVA还提供了byte[] 类型,表征字节数组;

import java.util.Arrays;public class Test
{public static void main(String[] args){byte[] byteA = new byte[2]; //# [0, 0]byte[] byteA1 = new byte[] {1,2,3,4};byte[] byteA2 = {1,2,3,4};byte[] byteA3 = {'a','b','c','d'};byte[] byteA4 = {0x12,0x00,0x00,0x00,0x03,0x03};System.out.println(byteA); //# [B@7852e922  数组首个元素的内存地址System.out.println(Arrays.toString(byteA)); //# [0, 0]System.out.println(Arrays.toString(byteA1)); //# [1, 2, 3, 4]System.out.println(Arrays.toString(byteA2)); //# [1, 2, 3, 4]System.out.println(Arrays.toString(byteA3)); //# [97, 98, 99, 100]System.out.println(Arrays.toString(byteA4)); //# [18, 0, 0, 0, 3, 3]//# 将字节加入字节数组byte byteB1 = 127;byte byteB2 = 'a';byte[] byteA4 = new byte[2];byteA4[0] = byteB1;byteA4[1] = byteB2;System.out.println(Arrays.toString(byteA4)); //# [127, 97]byte[] byteA5 = {byteB1, byteB2};System.out.println(Arrays.toString(byteA5)); //# [127, 97]}
}

编译运行

$ javac Test.java
$ java Test

16进制字节数组,使用0x标识

import java.util.Arrays;
public class Test
{public static void main(String[] args){byte[] rowKey = new byte[6];rowKey[0] = 0x12;rowKey[1] = 0x00;rowKey[2] = 0x00;rowKey[3] = 0x00;rowKey[4] = 0x03;rowKey[5] = 0x03;System.out.println(Arrays.toString(rowKey));//# [18, 0, 0, 0, 3, 3]}
}

编译运行

$ javac Test.java
$ java Test

字符串转byte[]

使用String类的方法getBytes;

getBytes()读取file.encoding的编码格式,然后进行转换; 所以会受到系统的影响;

import java.util.Arrays;public class Test
{public static void main(String[] args){//Original StringString string = "hello world";//Convert to byte[]byte[] byteA = string.getBytes();System.out.println(Arrays.toString(byteA));//# [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]}
}

编译运行

$ javac Test.java
$ java Test

Byte类

Byte 类将基本类型为 byte 的值包装在一个对象中;
一个 Byte 类的对象只包含一个类型为 byte 的字段;
通过关键字new来申请对象;

public class Test
{public static void main(String[] args){byte byteB1 = 5;byte byteB2 = 'a';Byte byteBC1 = new Byte(byteB1);Byte byteBC2 = new Byte(byteB2);Byte byteBC3 = new Byte("123"); //# 必须为数字类型的String,其他类型会报错//# Byte byteBC4 = new Byte("a"); //# 报错System.out.println(byteBC1); //# 5System.out.println(byteBC2); //# 97System.out.println(byteBC3); //# 123}
}

编译运行

$ javac Test.java
$ java Test

常用方法

方法 返回值 功能
byteValue() byte 以一个 byte 值返回 Byte 对象
intValue() int 以一个 int 值返回此 Byte 的值
toString() String 返回表示此 byte 值的 String 对象
valueOf(String s) Byte 返回一个保持指定 String 所给出的值的 Byte 对象
decode(String nm) Byte 将String转为Byte
public class Test
{public static void main(String[] args){//# create 4 Byte objectsByte byteBC1, byteBC2, byteBC3, byteBC4;//# 将数字字符串转为Byte对象byteBC1 = Byte.decode("100");//# 将普通字符串转为Byte对象; 无法直接转,会报错;//# byteBC4 = Byte.decode("abcd");//# 将十六进制字符串转为Byte对象;//# 十六进制字符串的标识: 0x|0X|#byteBC2 = Byte.decode("-#4c");//# 将八进制字符串转为Byte对象;八进制标识:0byteBC3 = Byte.decode("0127");System.out.println(byteBC1); //# 100System.out.println(byteBC2); //# -76System.out.println(byteBC3); //# 87}
}

编译运行

$ javac Test.java
$ java Test

HBase Bytes类

HBase提供了一个工具类: Bytes, 提供了更强大和灵活的功能;

常用方法

方法 返回值 功能
toBytes() byte[] 将字符串转为byte[],编码使用utf8
add() byte[] 合并byte[]
toString() string 将byte[]转为字符串
import java.util.Arrays;
import org.apache.hadoop.hbase.util.Bytes;
public class Test
{public static void main(String[] args){//Convert to byte[]byte[] byteBC = Bytes.toBytes("hello");System.out.println(Arrays.toString(byteBC));//# [104, 101, 108, 108, 111]System.out.println(Bytes.toString(byteBC));//# hello}
}

编译运行

$ javac -cp $(hbase classpath) Test.java
$ java -cp $(hbase classpath) Test

参考
org.apache.hadoop.hbase.util.Bytes
Java.lang.Byte Class
bit,byte,位,字节,汉字,字符

JAVA byte 类型相关推荐

  1. C#到Java byte类型冲突的解决

    最近要改写一个核心加密认证类,从C#改写成Java. 发现在调试时,加密的数据无论如何也对不上. 经过跟踪,发现问题出在C#和Java byte类型的区别上:在C#里 byte类型是无符号的,而Jav ...

  2. java byte 正数最大_为什么Java byte 类型的取值范围是-128~127

    概念:负数的补码是该 数 绝 对 值 的 原 码 按 位 取 反 ,然 后 对 整个数 加 1 步骤: 1.确定byte是1个字节,也就是8位 2.最大的应该是0111 1111,因为第一位是符号位, ...

  3. byte java byte_详解java中的byte类型

    Java中整数类型有:byte占8位, short 占16位, int占32位, long占64位 Java也提供了一个byte数据类型,并且是基本类型中的整数类型.java byte是作为最小的数字 ...

  4. Java byte类型转换成int类型时需要 0XFF的原因

    Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b  = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...

  5. byte java 详解_详解java中的byte类型

    Java也提供了一个byte数据类型,并且是基本类型.java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte.下面这篇文章主要给大家介绍了关于j ...

  6. Java中byte类型的范围

    Java中为什么byte的范围是 -128~127 在java中byte类型占8位 表示的范围是0000 0000 ~ 1111 1111 总共256个数, java中byte类型有正负,最高位表示正 ...

  7. java byte 无符号类型_获取java byte的无符号数值

    byte a = (byte)234; System.out.println(a); 上面的代码,结果是-22,因为java中byte是有符号的,byte范围是-128~127. 如果想输出234,该 ...

  8. Java的byte类型取值范围为什么是负128到正127呢

    Java的byte类型取值范围是-128~127为什么负数是128正数到127呢 概念:java中用补码表示二进制数,补码的最高位是符号位,最高位为"0"表示正数,最高位为&quo ...

  9. Java的byte类型详解

    前言 byte这个单词是Java八种基本数据类型之一字节的关键字,在计算机存储中以字节为单位,8位比特(bit)组成一个字节. 为什么弄清楚byte这么重要呢?因为智能硬件的数据传输大部分协议都是按字 ...

最新文章

  1. 最牛逼的性能监控系统!集强大功能于一身
  2. Unity The Type Matching Rule
  3. 机器学习基础知识之矩阵
  4. PHP程序员如何突破成长瓶颈(转)
  5. mysql connector安装教程_通过安装MySQL Connector/Net实现VS2017 C#编程连接MySQL数据库-网络教程与技术 -亦是美网络...
  6. 设计案例——点和圆的关系
  7. STM32F4 HAL库开发 -- STM32F407引脚图
  8. mysql导入_导出命令_MySQL导入导出命令
  9. 信息学奥赛一本通(1032:大象喝水查)
  10. Word VBA中读取Excel表格中的数据
  11. Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
  12. mysql左连接查询
  13. ASP.NET DATETIME
  14. 淘宝开源深度学习端侧推理引擎 MNN
  15. java取模数_java如何用负数做模数计算?
  16. 乐视2能刷原生android,乐视2高通版(S2) 魔趣OS 安卓9 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
  17. STM32产生固定频率和占空比可变的PWM
  18. css加空格的方法,css如何加空格
  19. 树莓派3B+ 引脚图说明
  20. 微信提示已连接到服务器失败,微信提示无法连接到服务器如何解决

热门文章

  1. 什么是BS?BS和CS模式的区别是什么?
  2. 《ERP原理》 期末复习——第二章 管理需求推动ERP的发展
  3. narrowing conversion of 'XXX' from 'int' to 'char' inside{}
  4. Typora+PicGo-Core+腾讯云COS 图床配置教程
  5. MAC:屏蔽独立显卡的声卡模块,使用ALC883集成声卡
  6. Tbase 源码 (四)
  7. docker-comose安装失败解决
  8. 微信转账2020假图片_中老年早上好表情包:2020最新早上好图片大全 微信最美鲜花早上好...
  9. led version 2.0 摇摇棒编程软件c 语言,基于单片机控制LED摇摇棒的解决方案 - 全文...
  10. 御剑系列扫描工具(五款)下载