文字変数のインクリメントについて

サティヤムBansal氏:

コードの下の仕事をしない、コンパイラは「int型からchar型への可能性のある損失の多い変換」を語ります

public class Main
{
    public static void main(String[] args) {
        char ch;
        ch = 65;
        ch=ch+1;
        System.out.println(ch);
    }
}

なぜエラーなしでコードの作品の下に行います。

public class Main
{
    public static void main(String[] args) {
        char ch;
        ch = 65;
        ch+=1;
        System.out.println(ch);
    }
}

しながらコードの両方における唯一の違いは、単なるある「= CH + 1」及び「CH + = 1」?

メナ:

Javaではチャー変数のサイズは、2バイト、int型の変数の大きさであるが:4バイト。

NB:バイトは256までの数値を保持することができる8ビットで構成されています。

あなたは(CH 1)を実行するときに最初のコードスニペットでは、コンパイラは1は、このようにあまりにもintとして最終的な値については、デフォルトではint型の値であると考えています。そして、文字であるchの中に最終的な値を置くためのコンパイラしようと... OPSは... 2バイトのサイズを持つ変数に4バイトで表される値に合うようにしようとしています!

あなたはこのように行う場合、この問題を修正することができます。CH =(char型)(CH + 1)

第二のスニペットでは、直接そのサイズが何であれ、変数CHをインクリメントしています。したがって、あなたはchar型の変数にint型の値に合うようにしようとする問題では実行されません。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=433139&siteId=1