2017-06-06 90 views
0

我有下面BigInteger class相關聯的Java代碼,Java Char數組的用途是什麼?

import java.math.BigInteger; 

public class Main 
{ 
    public static void main (String[] args) 
    { 
     BigInteger num = new BigInteger("123456789101112131415"); 

     String str; 
     char []Char = new char[10]; 

     str = num.toString(); 
     Char = str.toCharArray(); 

     System.out.println(str.length()); 
     System.out.println(Char.length); 
    } 
} 

在該代碼中,我有一個BigInteger NUM其具有21位數字。我將它轉換爲String,然後轉換爲Char array。但我分配的char數組的長度只有10之前。那麼這個char數組如何保存21個字符?

我真的誤解了這個事實。

還有一個問題,是否有任何方法直接將BigInteger轉換爲char數組? :)

+2

你覺得'Char = str.toCharArray();'是嗎? –

+0

它將字符串轉換爲char數組嗎? 對不起,如果我錯了,請原諒我。我是Java新手。 :) –

+2

讓我換句話說,你認爲它對變量「Char」有什麼作用? –

回答

3

要回答你的第一個問題,變量Char(考慮更改你的變量名稱)是對char數組的引用。你將它設置爲指向大小10的陣列但後來,由於...

Char = str.toCharArray(); 

...你可以將這個基準點到另一個陣列。原始數組不再具有與之相關的引用,並且被垃圾收集。

要回答你的第二個問題,你可以在一行中級聯函數。

char[] Char = num.toString().toCharArray(); 
+0

對我來說這是件好事! :D 終於學到了東西:) –

+1

作爲一個方面說明,爲了得到只有前10位的數字,就像OP期待他們的代碼可能表現的那樣,可以使用['Arrays.copyOf(num.toString()。toCharArray (),10)'](http://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#copyOf-char:A-int-)。這並不是說我看到有任何特別的理由,但我想這是值得一提的。 – Radiodef

+0

@Radiodef快樂:) –