Maison > Java > javaDidacticiel > Explication détaillée de la conversion du type de données Java

Explication détaillée de la conversion du type de données Java

高洛峰
Libérer: 2017-01-22 10:25:17
original
2430 Les gens l'ont consulté

1. Explication des types de données de base

Le langage Java propose huit types de données de base. Six types numériques (quatre entiers, deux types à virgule flottante), un type caractère et un type booléen.
[Remarque] JAVA n'a pas de type non signé
(1) : int, short, byte, long
(2) Type à virgule flottante : float, double
(3). : char
(4). Booléen : booléen

Type de base Taille Valeur minimale Valeur maximale
void
booléen ----- - ----- ------
char 16 bits Unicode 0 Unicode 2^16-1
octet 8 bits -128 127
court 16 bits -2^15 2^15-1
int 32 bits -2 ^31 2^31-1
long 64 bits -2^63 2^63-1
float 32 bits IEEE754
double 64 bits IEEE754 IEEE754

De plus, nous souvent, deux variables de classe sont utilisées, à savoir String et Date.

2. Conversion de données

1 Types de conversion de type de données
Il existe généralement trois types de conversion de type de données Java, à savoir :
(1) Données de base. Conversion entre types
(2). Conversion entre chaînes et autres types de données
(3) Conversion d'autres types de données pratiques

2 Conversion entre types de données de base
Types de base à partir de faibles. niveau haut niveau sont (byte, short, char)--int--long--float--double
La conversion entre les types de données simples peut être divisée en :
● Automatique de bas niveau à haut niveau Conversion de type
 QuantityConversion de type forcée de haut niveau à bas niveau
 QuantityLe type de transition de classe Wrapper peut être converti

 2.1 Conversion de type automatique
 2.1.1 Les variables de bas niveau peuvent être directement converti en variables de haut niveau, appelées Pour la conversion automatique de type, par exemple, l'instruction suivante peut être passée directement en Java :

byte b;
int i=b;
long l=b;
float f=b;
double d=b;
Copier après la connexion

 2.1.2 Si le type de bas niveau est de type char, converti en type de haut niveau (entier) Quand, il sera converti en la valeur de code ASCII correspondante, telle que

char c='c';
int i=c;
System.out.println("output:"+i);
Copier après la connexion

 Sortie : sortie :99;

 2.1.3 Pour les trois types d'octet, short et char En général, ils sont plats, ils ne peuvent donc pas être automatiquement convertis les uns aux autres. Utilisez la conversion de type forcée suivante.

short i=99 ;
char c=(char)i;
i =(short) c;
System.out.println("output:"+c);
Copier après la connexion

Output: output: c;
Mais d'après l'expérience, les trois types d'octet, short et int sont tous des entiers, donc si vous opérez sur des données entières , Il est préférable d'utiliser le type int de manière uniforme.

2.2 Conversion de type forcée
Lors de la conversion de variables de haut niveau en variables de bas niveau, la situation sera plus compliquée. Vous pouvez utiliser la conversion de type forcée. Autrement dit, vous devez utiliser le format de déclaration suivant :

int i=99;
byte b=(byte)i;
char c=(char)i;
float f=(float)i;
Copier après la connexion

Comme vous pouvez l'imaginer, cette conversion peut certainement entraîner un débordement ou une perte de précision.

2.3 Conversion du type de transition de classe d'empaquetage
Lorsque nous discutons de la conversion entre d'autres types de variables, nous devons comprendre la classe d'empaquetage de Java. La classe dite d'empaquetage signifie que des types simples de variables peuvent être directement représentés. Pour une classe, nous utiliserons largement ces classes wrapper lors de la réalisation de conversions de types de variables. Java a un total de six classes d'empaquetage, à savoir Boolean, Character, Integer, Long, Float et Double. Littéralement, nous pouvons voir qu'elles correspondent respectivement à boolean, char, int, long, float et double. String et Date sont eux-mêmes des classes. Il n’y a donc pas de notion de classe d’emballage.

Lors de la conversion entre des types de données simples (conversion automatique ou conversion forcée), nous pouvons toujours utiliser des classes wrapper pour les transitions intermédiaires.
Normalement, nous déclarons d'abord une variable, puis générons une classe d'emballage correspondante, puis utilisons diverses méthodes de la classe d'emballage pour effectuer une conversion de type. Par exemple :
Exemple 1, lorsque vous souhaitez convertir le type float en type double :

float f1=100.00f;
Float F1=f1;//自动装箱
double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法  当希望把double型转换为int型时:
 
double d1=100.00;
Double D1=new Double(d1);//调用构造函数
int i1=D1.intValue();
Copier après la connexion

    简单类型的变量转换为相应的包装类,可以利用包装类的构造函数和自动装箱而直接赋值。即:
    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);
Copier après la connexion

4. 将字符型直接做为数值转换为其它数据类型
  例如,'1'就是指的数值1,而不是其ASCII码,对于这种转换:

char c = '1';
//Character的getNumericValue(char ch)方法
int i = Character.getNumericValue(c);
//ASCII码相减
i = c -'0';
Copier après la connexion

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);
Copier après la connexion

更多Java数据类型转换详解相关文章请关注PHP中文网!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal