Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung der Java-Datentypkonvertierung

Detaillierte Erläuterung der Java-Datentypkonvertierung

高洛峰
高洛峰Original
2017-01-22 10:25:172367Durchsuche

1. Erläuterung grundlegender Datentypen

Die Java-Sprache bietet acht Grundtypen. Sechs numerische Typen (vier Ganzzahlen, zwei Gleitkommatypen), ein Zeichentyp und ein boolescher Typ.
[Hinweis] JAVA hat keinen vorzeichenlosen Typ
(1). Ganzzahl: int, short, byte, long
(2). : char
(4). Boolean: boolean

Basistyp Größe Minimalwert Maximalwert

void
boolean ----- - ----- ------
char 16-bit Unicode 0 Unicode 2^16-1
byte 8-bit -128 +127
short 16-bit -2^15 +2^15-1
int 32-bit -2 ^31 64-Bit IEEE754 IEEE754

Zusätzlich verwenden wir häufig auch zwei Klassenvariablen, nämlich Zeichenfolge und Datum.

2. Datenkonvertierung


1 Arten der Datentypkonvertierung

Es gibt im Allgemeinen drei Arten der Java-Datentypkonvertierung, nämlich:

(1). Konvertierung zwischen Typen

(2). Konvertierung zwischen Zeichenfolgen und anderen Datentypen

(3). Konvertierung zwischen grundlegenden Datentypen
Basistypen von Low-. Level zu High-Level sind (byte, short, char)--int--long--float--double
Die Konvertierung zwischen einfachen Datentypen kann unterteilt werden in:
●Low-Level zu High-Level automatisch Typkonvertierung
 ●Erzwungene Typkonvertierung auf hoher Ebene in Low-Level

 ●Der Übergangstyp der Wrapper-Klasse kann konvertiert werden


 2.1 Automatische Typkonvertierung
 2.1.1 Variablen auf niedriger Ebene können direkt konvertiert werden in Variablen auf hoher Ebene konvertiert, was als automatische Typkonvertierung bezeichnet wird. Beispielsweise kann die folgende Anweisung direkt in Java übergeben werden:


 2.1.2 Wenn die Low-Level-Variablen Der Level-Typ ist der Char-Typ und wird in einen High-Level-Typ (Ganzzahl) konvertiert. Wenn er in den entsprechenden ASCII-Codewert konvertiert wird, z. B.

byte b;
int i=b;
long l=b;
float f=b;
double d=b;

 Ausgabe: Ausgabe:99 ;

 2.1.3 Für die drei Typen Byte, Short und Char sind sie auf derselben Ebene und können daher nicht automatisch ineinander konvertiert werden. Verwenden Sie den folgenden erzwungenen Typ Konvertierung.
char c='c';
int i=c;
System.out.println("output:"+i);

Ausgabe: Ausgabe: c;

Aber erfahrungsgemäß sind die drei Arten von Byte, Short und Int alle Ganzzahlen, wenn Sie also mit ganzzahligen Daten arbeiten , Es ist am besten, den Typ int einheitlich zu verwenden.

short i=99 ;
char c=(char)i;
i =(short) c;
System.out.println("output:"+c);
2.2 Erzwungene Typkonvertierung

Bei der Konvertierung von Variablen auf hoher Ebene in Variablen auf niedriger Ebene wird die Situation komplizierter. Sie können die erzwungene Typkonvertierung verwenden. Das heißt, Sie müssen das folgende Anweisungsformat verwenden:


Wie Sie sich vorstellen können, kann diese Konvertierung definitiv zu einem Überlauf oder Genauigkeitsverlust führen.

2.3 Konvertierung von Übergangstypen der Verpackungsklasse
int i=99;
byte b=(byte)i;
char c=(char)i;
float f=(float)i;
Wenn wir die Konvertierung zwischen anderen Variablentypen diskutieren, müssen wir die Verpackungsklasse von Java verstehen. Die sogenannte Verpackungsklasse bedeutet, dass einfache Variablentypen direkt dargestellt werden können. Für eine Klasse werden wir diese Wrapper-Klassen häufig verwenden, wenn wir Variablentypkonvertierungen durchführen. Es gibt sechs Verpackungsklassen in Java, nämlich Boolean, Character, Integer, Long, Float und Double. Im wahrsten Sinne des Wortes können wir sehen, dass sie boolean, char, int, long, float und double entsprechen. String und Date sind selbst Klassen. Es gibt also kein Konzept der Verpackungsklasse.

Bei der Konvertierung zwischen einfachen Datentypen (automatische Konvertierung oder erzwungene Konvertierung) können wir immer Wrapper-Klassen für Zwischenübergänge verwenden.

Normalerweise deklarieren wir zuerst eine Variable, generieren dann eine entsprechende Verpackungsklasse und verwenden dann verschiedene Methoden der Verpackungsklasse, um eine Typkonvertierung durchzuführen. Zum Beispiel:

Beispiel 1, wenn Sie den Float-Typ in den Double-Typ konvertieren möchten:


     简单类型的变量转换为相应的包装类,可以利用包装类的构造函数和自动装箱而直接赋值。即:
    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中文网!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn