2017-06-20 43 views
-1
package jetPlanes; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 
import java.nio.charset.Charset; 
import java.text.RuleBasedCollator; 

public class BoomBox { 
    public static void main(String args[]){ 
     byte[] bytes = "009343724758".getBytes(); 
     String string = new String(bytes,0,4); 
    Long long1 =new Long(string); 
    System.out.println(long1); 
    } 
} 

输出:93 相反的:0093我需要解释为什么字节这样的行为,以及如何避免它

但不是0号不受影响。我知道字节存储原始二进制文件,是这个原因吗?

我需要那两个'00'。如何获得时间?

+0

变化的精度,包括前导零。 https://stackoverflow.com/questions/4051887/how-to-format-a-java-string-with-leading-zero至于实际的二进制,零点在那里。您的数据类型足够长,以至于有额外的零。 – Peri461

+0

@ Pen461您是否认为我提问的问题与您提供的链接相同?你试图做的解释是在代码中,这会更有帮助。 Thankyou .. –

+0

我这样做。而作为问题答案给出的例子完全符合你的要求。请参阅Grimy的答案,解释价值和表现之间的差异。 – Peri461

回答

2

Long是一个数字类型:它只能存储数字。在这种情况下,它存储编号93. 0093不是与93分开存在的编号:数字上,它是相同的。因此,你不可能有那些领先的0。如果你真的想保留前导0,你需要坚持使用String。

如果你实际上并不需要存储的前导零,并且只需要打印出来,你可以试试这个:

System.out.format("%04d\n", long1); 
相关问题