【问题标题】:code meaning in java (i+"").getBytes() [duplicate]java中的代码含义(i +“”).getBytes()[重复]
【发布时间】:2018-06-11 23:37:08
【问题描述】:

java byte []b = (i+"").getBytes() 其中i 是整数

int i = 8;
byte []b = (i+"").getBytes();

我看过这行代码,不明白 (i+"") 东西是什么意思。

【问题讨论】:

标签: java arrays string int


【解决方案1】:

i + "" 演示了字符串与int 的连接。

如果你扩大一点。相当于

 String s = i+"";
 byte []b = s.getBytes();

但是,这样做几乎是一种技巧。除非你真的需要,否则不要选择串联。

改用重载方法valueOf(int i)

byte []b = String.valueOf(i).getBytes();

这使您更具可读性和简洁性。

【讨论】:

    【解决方案2】:

    您想从 String 表示的 int 值中获取 bytes
    所以你需要一个String
    通过将int 值与产生String 的空String 连接起来,您可以将int 转换为String,然后您可以调用String.getBytes()String 编码为字节数组。

    15.18.1. String Concatenation Operator +

    如果只有一个操作数表达式是字符串类型,那么字符串 对另一个操作数执行转换(§5.1.11)以产生一个 运行时的字符串。

    一种更高效、更优雅的方式是:

    byte[] b = String.valueOf(i).getBytes();
    

    【讨论】:

    • “从 int 值获取字节”是对正在发生的事情的一个非常不明确的描述:您没有得到 int 的 4 字节表示,这是对此的一种解释。您将获得以 10 为基数的 int 字符串表示的每个字符的 ASCII 值。
    • @Andy Turner,对。它没有正确制定。我更新了
    【解决方案3】:

    (i + "")只是将int转换为String的一种方式,相当于:

    String.valueOf(i)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      • 1970-01-01
      • 2016-12-11
      • 2015-09-15
      • 2017-02-23
      • 2013-04-26
      相关资源
      最近更新 更多