図2は、データ型と演算子 - 基本的なタイプに変換しました

 

自動変換やキャスト:(ブール値を含まない)、Java言語が提供するデータ型の7種類の中で交換可能な、変換の2種類があります。

自動型変換

  システムは、変数の直接割り当てられたもう一つの基本的なタイプのいくつかの基本的な型の値をサポートしている場合は、すべてのJavaの数値型は、相互に変換することができ、これは自動型変換と呼ばれています。テーブルの少数または可変値の範囲が他の変数テーブルの範囲の多数に直接割り当てられた場合、システムは、型変換を自動化することができ、そうでない場合はキャストする必要があります。

  テーブルの数が少ない種の大型ボトルに水のバイアルは、何の問題もありません水、の2瓶があるのと同様に、自動型変換のテーブルの範囲の数が多いためにできる範囲、そうでない場合は、あなたがキャストが必要になります。

 自動的に型にデモプログラム:

1  パブリック クラス自動変換{
 2      公共 静的 ボイドメイン(文字列[]引数){
 3。         INT A = 6 ;
 4          // 自動的に型に変換することができるint型フロート
5。         フロート F = A;
 6          のSystem.out.println(F)、
 図7          // バイトタイプは、次のコードが与えられる、直接変換ビットchar型にすることはできません
 8。         // AutoConversion.java:9:エラー:互換性のない型:バイトから文字への変換が失われる可能性がある
。9          バイト。B = 9 ;
 10          // CHAR B = C;
 11          // のSystem.out.println(C)、
12は         ダブル D = B。
13          のSystem.out.println(D)。
14      }
 15 }

 

 

 また、ときに任意のプリミティブ型の値と文字列連結値は、基本的なタイプの値は自動的に文字列型に変換され、文字列型、ではないが、基本的なタイプが、参照型。それは実質的にタイプ列の対応する値に変換することが望まれる場合にこのように、基本的なタイプの値は空の文字列と接続することができます。

1  パブリック クラス自動変換{
 2      公共 静的 ボイドメイン(文字列[]引数){
 3。         // 文字列STR1 = 5;
 4          // 5は整数、文字列がに直接コピーすることができないので、上記のコードは、間違って
5          列= 3.5F + STR2 "" ;
 6          のSystem.out.println(STR2);
 7          // 次の文出力7helloは、型変換を行う、第3 + 4 = 7行う
。8          のSystem.out.printlnを(3 + 4 + " "こんにちは);
 9          // 3を処理して、文字列として意志こんにちは+ 3として次の文出力こんにちは34、!
 10          @ その後、4その後、文字列として処理
11。          のSystem.out.println("こんにちは「+ + 4 3 );    
 12     }

 

 

 第二に、キャスト

  しかし、それを右から左にキャストする必要があり、矢印の方向は、左から右への自動型変換され、変数+「」の他のタイプは、文字列(参照型)に変換することができます。

  シンタックスのキャスト:(たtargetType)値、キャスト演算子かっこ()

  ときに、小さなボトルに水の大きなボトルに似たキャスト、水の大きなボトルでない場合ははるかに良いが、水たくさんの大きなボトルは、オーバーフローが発生する場合は、データが得られ失われました。この変換はまた、「減少した変換(狭い変換)」と呼ばれています。

例:

1  パブリック クラスNarrowConversion {
 2      公共 静的 ボイドメイン(文字列[]引数){
 3。         INTザiValue = 233 ;
 4          // バイト値にint型の値のタイプを強制
5          バイト bValue =(バイト)iValue;
 6          / / 出力は-23である
7。         のSystem.out.println(bValue);
 8          // double値に必須のタイプはintに変換されている
9。         二重 dValue = 3.98 ;
 10          INT公差=(INT )dValue;
 11          // 3つの出力
12であり         System.out.println(TOL)。
13      }
 14 }

 

 分析:

整数型の浮動小数点数がint型に強制するとき、Javaの浮動小数点直接小数部をステージング。外部から、鋳造型整数上記手順高度233バイトの典型的なオーバーフローであり、-23となるように。次の図は、変換プロセスを示しています。

 

 簡単に間違った場所:

1、フロート変数の割り当て問題

// float型変数エラーに5.6直接割り当て5.6はデフォルトのタイプ二重であるため、
//エラー:互換性のない型:ダブルからfloatへの変換は、損失があってもよい フロート A = 5.6
//正しい使用:
B = 5.6Fフロート;
//またはフロートB =フロート(5.6)。

図2は、通常の状況下では、文字列が直接ベース型に変換することができないが、包装の種類に対応する基本クラスは、実質的に文字列型の変換を達成することができます。

例えば、int型に文字列を変換するために、次のコードによって実施することができます。

public class Str_intTest{
    public static void main(String[] args){
        String a="45";
        int iValue=Integer.parseInt(a);
        System.out.println(iValue);
    }
}

 

执行结果:

 

 

Java 为 8 种基本类型都提供了对应的包装类: boolean 对应 Boolean 、byte 对应 Byte 、 short 对应 Short、int 对应 Integer 、 long 对应 Long 、 char 对应 Character 、 float 对应 Float 、 double 对应 Double , 8 个包装类都提供了 一个 parseXxx(String str)静态方法用于将字符串转换成基本类型。

 三、表达式类型的自动提升

  当一个算术表达式包含多个基本类型的值时,整个算术表达式的数据类型都将会发生自动提升。规则:

1、所有的byte、short、char类型将提升到int类型。

2、整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。操作数的等级排列如图所示,位于箭头右边类型的等级高于箭头左边类型的等级。

典型错误:

short sValue=5;
//表达式中的 s Value 将自动提升到 i nt 类型,则右边的表达式类型为 i n t
// 将一个 int 类型值赋给 short 类型变量将发生错误
sValue=sValue-5;

 

おすすめ

転載: www.cnblogs.com/weststar/p/11996686.html