Javaの自動型変換とキャスト

データ型は、暗黙的(自動型変換)および明示的な変換(キャスト)は、2つに変換されます。

暗黙的な変換(自動変換)

2つの条件が満たされたとき、そのデータの種類は、変数の別のタイプ、自動的に実行される変換の種類(自動型変換)に割り当てられています。

	两种数据类型彼此兼容
	
	目标类型的取值范围大于源数据类型(低级类型数据转换成高级类型数据)

上記2つの条件が満たされた場合、自動変換(拡大変換)が起こります。例えば、短距離の大型種に起因するバイト型ショートを変換するために、自動的にバイトshort型に変換されます。

動作中に、異なるタイプのデータのためには、同じデータ型に変換され、整数、浮動小数点および文字は、混合操作に参加することができます。自動変換ルールは、ハイレベルのデータ・タイプからデータの低レベルの型に変換されます次のように変換規則は、次のとおりです。

	数值型数据的转换:byte→short→int→long→float→double。
	
	字符型转换为整型:char→int。

左から右への変換シーケンスに従う上記のデータ型は、最終的な発現が最大の可変範囲のデータ型を示すに変換されます。

自動型変換の例
歯磨き粉2箱を購入するスーパーマーケットで買い物客、クリネックスの4箱。これで価格は10.9元の歯磨き粉で、クリネックス価格は5.8元、コモディティ需要の合計金額です。

実現

public static void main(String[] args) {
    float price1 = 10.9f; // 定义牙膏的价格
    double price2 = 5.8; // 定义面巾纸的价格
    int num1 = 2; // 定义牙膏的数量
    int num2 = 4; // 定义面巾纸的数量
    double res = price1 * num1 + price2 * num2; // 计算总价
    System.out.println("一共付给收银员" + res + "元"); // 输出总价
}

上記のコードは最初の価格変数記憶歯磨き粉フロートタイプを定義し、次にダブルクリネックス可変貯蔵タイプの価格を定義し、アイテムを格納するint型の二つの変数の数、及び最終的に乗算演算を定義しその後、出力結果がdouble型の変数に格納されています。

出力

一共付给收银员44.999923706055

実行結果、フロート、int型、および操作に関係するデータの二重の3種類から見ると、結果がdouble型の最終的な出力データです。この変換は、一般的と呼ばれている「自動アップグレードのタイプの表現。」

例えば、ディスプレイを使用してキャスト:

byte b = 50;
b = (byte)(b*2);

これは100の正しい値を生成します。

ご注意ください:シャア特殊なタイプ、CHAR自動的に変換されたint型、長い、フロート、ダブル、しかし自動的に変換しないバイト、および文字の短いが、自動的に短いchar型のバイトまたはに変換することはできません。

明示的な変換(キャスト)

自動型変換は便利ですが、プログラミングのニーズのすべてを満たしていませんが。あなたはint型の変数にdouble型の値を必要とする場合たとえば、あなたはどのように行うのでしょうか?

double型の範囲の変更のがintよりも小さいので、この変換は、自動的には行われません。この変換は、「狭く変換」を作るために持っているあなたは確かに、ソース・データ・タイプの値にしたいので、ターゲット・データ・タイプを合わせるために小さくなる。

2つのデータ型に互換性がない、以下のソース・タイプのターゲットタイプよりも範囲で、それは自動的に変換することができない場合、それらはキャストする必要があり構文は次のとおりです。

(type)variableName

ここで、variableNameには、変数名のデータ型に変換すると入力すると、単により多くvariableNameに型変換され、キャストの例は次のとおりです。

int a = 3;
double b = 9.0;
a = (int)b;

int型に、上述した第一のコード型変数bキャスト重複値、その後、b値の値を割り当てるが、変数自体は変更されません。

キャストでは、値が整数に変換された場合に浮動小数点型は、小数点は、直接すべての後ろを削除し、そしてそれはフローティングタイプのキャストの整数、小数点の後にゼロパディングがある場合。

キャストの例の
歯磨き粉2箱を購入するスーパーマーケットで買い物を顧客、クリネックスの4箱。歯磨き粉は、10.9元の価格5.8元顔面組織の価格であり、合計金額の計算に格納されているINTデータを用いて、商品の合計金額を見つけます。次のようにコードは次のとおりです。

public static void main(String[] args) {
    float price1 = 10.9f;
    double price2 = 5.8;
    int num1 = 2;
    int num2 = 4;
    int res2 = (int) (price1 * num1 + price2 * num2);
    System.out.println("一共付给收银员" + res2 + "元");
}

上記の例では、コンピューティングに関与するdouble型、float型、およびデータ型intがあり、計算は、二重被写体のint型の要件の結果をデフォルトのタイプをもたらすために、ダブルタイプの範囲よりも小さい範囲のint 、強制転換の必要性そう。

出力

一共付给收银员44
公開された383元の記事 ウォン称賛92 ビュー10000 +

おすすめ

転載: blog.csdn.net/weixin_45743799/article/details/104636001