6

重複の可能性:
Javaのcharとint

AsicIIテーブル:http ://www.asciitable.com

以下のコードは、対応する文字のDec値を出力します(例: "123"-> 49 50 51

 public void foo(String str)
        {
            for(int x = 0; x < str.length(); x++)
            {
                int temp = str.charAt(x);
                System.out.println(temp);
            }
        }

しかし、Javaは強い型の言語であることに気付きました。つまり、コンパイル時にすべてをキャストする必要がありますが、コードが文字をAsicIIテーブルの正しいDec値に変換する方法とタイミングをどのように知っているのでしょうか。Java /プログラミングの基本を台無しにしましたか?

4

3 に答える 3

8

Acharは単に符号なしの16ビット数であるため、基本的にはint型のサブセットであるため、JVMはあいまいさなしにそれをキャストできます。

于 2013-01-15T17:12:11.580 に答える
3

JavaはCに基づいて作成されており、それがCの機能です。charsも数値を表します

ただし、スカラー型としては、次のような問題があります。--charを出力するとASCII文字が生成されます-intを出力すると数値が生成されます

アップキャストとダウンキャストに関する詳細もいくつかあります(文字に変換されるintは、切り捨てが含まれるため、明示的に実行する必要があります)

例:

long a = 1L; // a real long
long n = 5; // int, cast to long
int x = n;  // (will raise an error)
int z = (int) n; // works fine
于 2013-01-15T17:11:41.287 に答える
2

charには二重の性格があります。

これは16ビットの符号なし整数型であり、intへの割り当てを非常に自然な操作にします。これには、明示的なキャストを必要とせずにコンパイラが必要に応じて挿入する変換の1つであるプリミティブ変換の拡張が含まれます。

これは、I/Oおよび文字列操作で文字を表す方法でもあります。

于 2013-01-15T17:14:28.817 に答える