【问题标题】:Practical use of byte data type in Java [closed]Java中字节数据类型的实际使用[关闭]
【发布时间】:2012-09-19 23:51:51
【问题描述】:

除了 integer32 位 字节仅消耗 8 位存储空间这一事实之外。它还有哪些其他实际用途?我在一篇文章中读到,当我们处理来自网络或文件的数据流时,它很有用。当您处理可能与 Java 的其他内置类型不直接兼容的原始二进制数据时,它们也很有用。任何人都可以用例子来解释这些吗?并陈述一些更实际的用途?

【问题讨论】:

  • 所有网络和磁盘 API 都以字节为单位工作。你没注意到吗?

标签: java


【解决方案1】:

当您阅读时,字节在读取位流时很有用

在说明原因之前,我先问你一个问题,一个字符表示为多少位或多少字节?? 8位/1字节。我希望你在这里得到字节的原因。

读取比特流时使用字节的原因是当你以字节为单位读取流时,每次读取时,你的字节类型变量中都会有一个字节的数据。 IE。 1 个字符。因此,在阅读时,您将一次获得一个字符。

机器也能理解位,所以字节也能派上用场,当从键盘、文件、数据流等任何输入读取时,我们更喜欢字节。同样,当写入设备监视器时,输出流、文件等字节会派上用场。

周围的一切都是 10100010 的倍数,所以当您不确定发送者的期望或接收者的期望时,请使用字节。

【讨论】:

  • 周围的一切都是 10100010 的倍数?
  • @RadijatoR:我的意思是一切都是由字节组成的(10100010中有8位)
【解决方案2】:

通常字节数组用于序列化(到磁盘、网络流、内存流等)。一个简单的例子可能是这样的(取自here):

Object object = new javax.swing.JButton("push me");

try {
    // Serialize to a file
    ObjectOutput out = new ObjectOutputStream(new FileOutputStream("filename.ser"));
    out.writeObject(object);
    out.close();

    // Serialize to a byte array
    ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
    out = new ObjectOutputStream(bos) ;
    out.writeObject(object);
    out.close();

    // Get the bytes of the serialized object
    byte[] buf = bos.toByteArray();
} catch (IOException e) {
}

字节数据类型的另一种用法也与图像有关。例如,您可以这样做:byte[] pixels = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();(取自 here)来访问像素相关信息。

【讨论】:

    【解决方案3】:

    byte 是 java 中的 8 位有符号原始类型。它在我们以字节形式处理数据的情况下很有用,例如“从/向文件读取/写入字节数据”。 您可以在 here 找到最佳实用示例。

    【讨论】:

      猜你喜欢
      • 2014-03-16
      • 2010-12-31
      • 2013-12-08
      • 2013-08-14
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      相关资源
      最近更新 更多