2017-06-20 54 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); 
相關問題