基本タイプのタイプ変換

2487 ワード

Javaプログラムでは、異なる基本タイプの値が相互変換されることがよくあります.
Java言語では、自動タイプ変換と強制タイプ変換の2つのタイプの数値タイプを相互に変換できます.
自動タイプ変換
Javaのすべての数値型変数は互いに変換することができ、システムがある基本型の値を別の基本型の変数に直接割り当てることをサポートしている場合、この方式は自動型変換と呼ばれます.
1つのテーブル数の範囲の小さい数値または変数を別のテーブル数の範囲の大きい変数に直接割り当てると、自動タイプ変換が可能になります.そうしないと、強制変換が必要になります.
表数の範囲が小さいものは、表数の範囲が広いものに自動タイプ変換することができ、2本の水があるように、小瓶の水を大瓶に注ぐと何の問題もありません.
Javaが自動タイプ変換をサポートするタイプは以下の通りで、左の数値タイプは矢印の右の数値タイプに自動的に変換できます.
1),byte->short->int->long->float->double
2),char->int->long->float->double
public static void main(String[] args)
	{
		//   3   int       float  
		int a = 6;
		long b = a;
		System.out.println(b);
	}

基本タイプの値と文字列値を接続演算すると、基本タイプの値は自動的に文字列タイプに変換されます.文字列タイプは基本タイプではなく、参照タイプです.
基本タイプの値を対応する文字列に変換する場合は、基本タイプの値と空の文字列を接続できます.
public static void main(String[] args)
	{
		//                   ,              
		int a = 6;
		System.out.println(a + "");
		//        7LinkinPark
		System.out.println(3 + 4 + "LinkinPark");
		//        LinkinPark34
		System.out.println("LinkinPark" + 3 + 4);
	}

強制型変換
上の自動変換で矢印の右側のタイプを左のタイプに変換する場合は、強制タイプ変換を行う必要があります.
強制型変換の構文形式:(targetType)value、強制型変換の演算子は括弧()です.
強制タイプ変換を行うと、大きな瓶の中の水を小さな瓶に注ぐのと同じように、大きな瓶の中の水が多くなければ大丈夫ですが、大きな瓶の中の水が多いと、オーバーフローを引き起こし、データが失われます.
このタイプは、縮小変換とも呼ばれます.
注意:テーブル数の範囲の大きいタイプを範囲の小さいタイプに強制的に変換しようとすると、情報の損失を引き起こしやすいため、特に注意しなければなりません.
public static void main(String[] args)
	{
		//   3     -23,     
		int intValue = 233;
		byte byteValue = (byte) intValue;
		System.out.println(byteValue);
		//   3     3,       
		double doubleValue = 3.14;
		int iValue = (int) doubleValue;
		System.out.println(iValue);
	}

式タイプの自動昇格
1つの演算式に複数の基本タイプの値が含まれている場合、演算式全体のデータ型が自動的に上昇します.
Javaでは、次の自動昇格ルールが定義されています.
1)すべてのbyteタイプ,shortタイプ,charタイプがintタイプに昇格する.
2)算術式全体のデータ型は、式の最高レベルのオペランドと同じタイプに自動的にアップグレードされます.
public static void main(String[] args)
	{
		//   2     ,shortValue      ,       int
		//    int        short    ,    
		short shortValue = 5;
		shortValue = shortValue - 2;
		//   4     ,3           ,          
		// double,int,byte ,double    ,    double  
		byte byteValue = 4;
		int intValue = 1;
		double doubleValue = 2.33;
		double result = byteValue + intValue + doubleValue;
		System.out.println(byteValue + intValue + doubleValue);
		//           double
		System.out.println(doubleValue / intValue);
	}