ホームページ >Java >&#&チュートリアル >Javaのデータ型変換の詳しい説明
1. 基本的なデータ型の説明
Java言語には8つの基本的な型があります。 6 つの数値型 (4 つの整数、2 つの浮動小数点型)、文字型、およびブール型。
【注意】JAVAには、整数型
(1)、浮動小数点型
(3)、文字型
(4)はありません。 : ブール値 2^16-1
バイト 8 ビット -128 +127
int 32 ビット -2^31 +2^31-1
long 64 ビット -2^63 +2^63-1
float 32 ビット IEEE754 IEEE754
double 64 ビット IEEE754 IEEE754
さらに、String と Date という 2 つのクラス変数をよく使用します。
2. データ変換
Java データ型の変換には、一般に、
(1) 基本データ型間の変換
(3). その他の実践的なデータ型変換
2 基本データ型間の変換
低レベルから高レベルまでの基本型は、(byte, short, char)--int--long--float- - double
単純なデータ型間の変換は次のように分けられます
●低レベルから高レベルへの自動型変換
●高レベルから低レベルへの強制型変換
2.1 自動型変換
2.1. 1 低レベルの変数を高レベルの変数に直接変換できます。これを自動型変換と呼びます。たとえば、次のステートメントを Java で直接渡すことができます。 -level型がchar型の場合、上位型(整数型)に変換します)変換時は
byte b; int i=b; long l=b; float f=b; double d=b;
2.1 .3 Byte、short、char の 3 つのタイプについては、レベルであるため、相互作用することはできません。 以下のキャストを使用して自動変換します。
char c='c'; int i=c; System.out.println("output:"+i);
Output:output:c;
ただし経験上、byte、short、intの3種類はいずれも整数型なので、整数データを操作する場合は一律にint型を使うのがベストです。 2.2 強制型変換高レベル変数を低レベル変数に変換する場合、状況はさらに複雑になります。強制型変換を使用できます。つまり、次のステートメント形式を使用する必要があります:
short i=99 ; char c=(char)i; i =(short) c; System.out.println("output:"+c);
ご想像のとおり、この変換は間違いなくオーバーフローや精度の低下につながる可能性があります。
2.3 パッケージングクラス遷移の型変換
他の変数型間の相互変換を議論する場合、いわゆるパッケージングクラスとは、単純な型の変数をクラスとして直接表現できることを理解する必要があります。実行 変数の型を相互に変換するとき、これらのラッパー クラスを広範囲に使用します。 Java には、Boolean、Character、Integer、Long、Float、Double の 6 つのパッケージング クラスがあり、文字通り、それぞれ boolean、char、int、long、float、double に対応していることがわかります。 String と Date はそれ自体がクラスです。したがって、パッケージ化クラスの概念はありません。
単純なデータ型間の変換(自動変換または強制変換)の場合、中間遷移には常にラッパー クラスを使用できます。
通常の状況では、最初に変数を宣言し、次に対応するパッケージング クラスを生成し、その後、パッケージング クラスのさまざまなメソッドを使用して型変換を実行できます。例:
int i=99; byte b=(byte)i; char c=(char)i; float f=(float)i;
简单类型的变量转换为相应的包装类,可以利用包装类的构造函数和自动装箱而直接赋值。即:
Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。
3 字符串型与其它数据类型的转换
通过查阅类库中各个类提供的成员方法可以看到,几乎从java.lang.Object类派生的所有类提供了toString()方法,即将该类转换为字符串。例如:Characrer,Integer,Float,Double,Boolean,Short等类的toString()方法toString()方法用于将字符、整数、浮点数、双精度数、逻辑数、短整型等类转换为字符串。如下所示:
int i1=10; float f1=3.14f; double d1=3.1415926; Integer I1=new Integer(i1);//生成Integer类 Float F1=f1; //自动装箱 Double D1=d1; //分别调用包装类的toString()方法转换为字符串 String si1 = i1 + "";//这种方式更为通用 String sf1=F1.toString(); String sd1=D1.toString(); Sysytem.out.println("si1"+si1); Sysytem.out.println("sf1"+sf1); Sysytem.out.println("sd1"+sd1);
4. 将字符型直接做为数值转换为其它数据类型
例如,'1'就是指的数值1,而不是其ASCII码,对于这种转换:
char c = '1'; //Character的getNumericValue(char ch)方法 int i = Character.getNumericValue(c); //ASCII码相减 i = c -'0';
5. Date类与其它数据类型的相互转换
整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:
Date(int year, int month, int date):以int型表示年、月、日
Date(int year, int month, int date, int hrs, int min):以int型表示年、月、日、时、分
Date(int year, int month, int date, int hrs, int min, int sec):以int型表示年、月、日、时、分、秒
在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。对于这种对应关系,Date类也有其相应的构造函数:Date(long date)
获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也可以将其理解为将Date类转换成int。
而Date类的getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date类也有一个toString()方法可以将其转换为String类。
有时我们希望得到Date的特定格式,例如20020324,我们可以使用以下方法,首先在文件开始引入,
import java.text.SimpleDateFormat; import java.util.*; java.util.Date date = new java.util.Date(); //如果希望得到YYYYMMDD的格式 SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD"); String dateFormat=sy1.format(date); //如果希望分开得到年,月,日 SimpleDateFormat sy=new SimpleDateFormat("yyyy"); SimpleDateFormat sm=new SimpleDateFormat("MM"); SimpleDateFormat sd=new SimpleDateFormat("dd"); String syear=sy.format(date); String smon=sm.format(date); String sday=sd.format(date);
更多Java数据类型转换详解相关文章请关注PHP中文网!