2011-01-08 3 views
2

文字列を使って "0620"などの時間を表現するコードを書いたことがありますが、慎重に考えれば、これを解析してパフォーマンスとストレージの比較を行うことができます。AndroidとJavaのショートタイプ

単体テストでは、私は0620として戻り値が620と比較され、これが機能すると期待しています。ただし、テスト0620は620(どちらもショート)が失敗します。

エラーメッセージには、0620が400(および400!= 620は障害を説明する)として中断されたと表示されます。リード0を削除すると問題は解決しますが、これについては何が起こっているのか知りたかったのですか?

これは、私はそれがアンドロイドに同じだと思うか

assertEquals("Time Failed", 620, st.GetTime()); 

答えて

6

0有する整数リテラル始まりはJava language specification通り進(ベース8)として解釈される:

進数字は、1つまたは続いてASCII 桁0から成り ASCII数字0〜7のうち、 は、正、ゼロ、または の負の整数を表すことができます。私は、これはJavaがC.

から継承された癖の一つであると考えてい

3

0620は、Javaに進(基本8)を意味

assertEquals("Time Failed", 0620, st.GetTime()); 

が、この作品は動作しません。 0620 == 400 not 620

 int decVal = 26; // The number 26, in decimal 
    int octVal = 032; // The number 26, in octal 
    int hexVal = 0x1a; // The number 26, in hexadecimal 

example from java tutorials at SUN/Oracle

関連する問題