Maison  >  Article  >  Java  >  Quels sont les huit principaux types de données en Java

Quels sont les huit principaux types de données en Java

青灯夜游
青灯夜游original
2023-02-02 10:17:2348518parcourir

Huit types de données principaux : 1. octet (bit), la capacité maximale de stockage de données est de 255 ; 2. short (entier court), la capacité maximale de stockage de données est de 65 536 3. int (entier), la capacité maximale de stockage de données ; est 2 sur 32 Puissance moins 1 ; 4. long (entier long), la capacité maximale de stockage de données est de 2 à la puissance 64 moins 1. float (nombre flottant simple précision), f ou F doit être ajouté après le nombre lors de l'attribution directe ; 6 , double (double précision) ; 7. boolean (type booléen) ;

Quels sont les huit principaux types de données en Java

L'environnement d'exploitation de ce tutoriel : système windows7, version java8, ordinateur DELL G3.

1. Les huit types de données de base de Java

Il existe huit types de base de Java. Les types de base peuvent être divisés en trois catégories, le type de caractère char, le type booléen booléen et les types numériques octet, court, int, long, flotteur, double . Les types numériques peuvent être divisés en types entiers octet, types courts, int, longs et à virgule flottante float et double. Il n'y a pas de types numériques non signés en JAVA. Leur plage de valeurs est fixe et ne changera pas avec les changements dans l'environnement matériel de la machine ou dans le système d'exploitation. En fait, il existe un autre type de base void en JAVA, qui a également une classe d'empaquetage correspondante java.lang.Void, mais nous ne pouvons pas opérer directement dessus. La plage de représentation de 8 types de supports est la suivante :

octet : 8 bits, la quantité maximale de données stockées est de 255 et la plage de données stockées est comprise entre -128 et 127.

court : 16 bits, la capacité de stockage maximale de big data est de 65536 et la plage de données est de -32768~32767.

int : 32 bits, la capacité maximale de stockage de données est de 2 à la puissance 32 moins 1, la plage de données est de moins 2 à la puissance 31 à plus 2 à la puissance 31 moins 1.

long : 64 bits, la capacité maximale de stockage de données est de 2 à la puissance 64 moins 1, la plage de données est de moins 2 à la puissance 63 à plus 2 à la puissance 63 moins 1.

float : 32 bits, la plage de données est de 3,4e-45~1,4e38, f ou F doit être ajouté après le numéro lors de l'attribution directe.

double : 64 bits, la plage de données est de 4,9e-324 ~ 1,8e308, d ou D peut être ajouté ou non lors de l'attribution d'une valeur.

booléen : Il n'y a que deux valeurs : vrai et faux.

char : 16 bits, stocke le code Unicode, attribue une valeur avec des guillemets simples.

Java détermine la taille de chaque type simple. Ces tailles ne changent pas avec les changements dans l'architecture de la machine. Cette immuabilité de taille est l'une des raisons pour lesquelles les programmes Java sont hautement portables. Le tableau suivant répertorie les types simples définis en Java, le nombre de chiffres binaires qu'ils occupent et les classes wrapper correspondantes.

LongFloatDoubleVide

type simple

booléen

octet

char

court

Int

long

float

double

void

Chiffres binaires

1

8

16

16

32

64

32

64

❤️

Integer

Pour la plage de valeurs des types de base des types numériques, nous n'avons pas besoin d'être obligés de nous en souvenir, car leurs valeurs ont été définies dans la classe d'emballage correspondante sous forme de constantes. Par exemple :

Type de base byte Chiffres binaires : Byte.SIZE Valeur minimale : Byte.MIN_VALUE Valeur maximale : Byte.MAX_VALUE

Type de base short Chiffres binaires : Short.SIZE Valeur minimale : Short.MIN_VALUE Valeur maximale : Short.MAX_VALUE

Type de base char Nombre de chiffres binaires : Character.SIZE Valeur minimale : Character.MIN_VALUE Valeur maximale : Character.MAX_VALUE

Type de base double Nombre de chiffres binaires : Double.SIZE Valeur minimale : Double.MIN_VALUE Valeur maximale : Double.MAX_VALUE

Remarque : Les valeurs minimales des types float et double ne sont pas les mêmes que les valeurs de Float.MIN_VALUE et Double.MIN_VALUE. En fait, Float.MIN_VALUE et Double.MIN_VALUE font référence au plus petit nombre positif pouvant être. représentés respectivement par les types float et double. C'est-à-dire qu'il existe une situation dans laquelle le type float ne peut pas représenter la valeur comprise entre 0 et ±Float.MIN_VALUE, et le type double ne peut pas représenter la valeur comprise entre 0 et ±Double.MIN_VALUE. Cela n’est pas surprenant puisque les valeurs dans ces plages se situent en dehors de leur plage de précision.

Les valeurs minimales et maximales de Float et Double sont affichées en notation scientifique. Le "E+nombre" à la fin indique combien de fois le nombre avant E doit être multiplié par 10. Par exemple, 3,14E3 vaut 3,14×1000=3140 et 3,14E-3 vaut 3,14/1000=0,00314.

Les types primitifs Java sont stockés sur la pile, leur vitesse d'accès est donc plus rapide que celle des objets d'instance des classes wrapper correspondantes stockées sur le tas. À partir de Java 5.0 (1.5), la machine virtuelle JAVA (JavaVirtual Machine) peut effectuer une conversion automatique entre les types de base et leurs classes wrapper correspondantes. Par conséquent, nous utilisons leurs classes wrapper comme les types de base lors des affectations, des transferts de paramètres et des opérations mathématiques, mais cela ne signifie pas que vous pouvez appeler des méthodes que seules leurs classes wrapper possèdent via des types de base. De plus, les classes wrapper de tous les types de base (y compris void) utilisent la modification finale, nous ne pouvons donc pas en hériter pour étendre de nouvelles classes, ni remplacer aucune de leurs méthodes.

Avantages des types de base : le stockage des données est relativement simple et l'efficacité opérationnelle est relativement élevée

Avantages des classes d'empaquetage : certaines sont simples, par exemple, les éléments d'une collection doivent être des types d'objets, ce qui satisfait l'idée Java selon laquelle tout est un objet

2. Constantes en Java

Constantes entières hexadécimales : lorsqu'elles sont exprimées en hexadécimal, elles doivent commencer par 0x ou 0X, comme 0xff, 0X9A.

Constante entière octale : Octal doit commencer par 0, comme 0123, 034.

Type entier long : le type entier long doit se terminer par L, tel que 9L, 342L.

Constantes à virgule flottante : Puisque le type par défaut des constantes décimales est double, f (F) doit être ajouté après le type float. Les variables avec des décimales sont également de type double par défaut.

Par exemple :

float f;
f=1.3f;//必须声明f。

Constantes de caractère : les constantes de caractère doivent être placées entre deux guillemets simples (notez que les constantes de chaîne sont entourées de deux guillemets doubles). Les caractères en Java occupent deux octets. Quelques caractères d'échappement couramment utilisés :

①r signifie accepter la saisie au clavier, ce qui équivaut à appuyer sur la touche Entrée

 ;

②\n表示换行;

③\t表示制表符,相当于Table键;

④\b表示退格键,相当于Back Space键;

⑤\'表示单引号;

⑥\''表示双引号;

⑦\\表示一个斜杠\。

3. 数据类型之间的转换

1).简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时。

自动转换

具体地讲,当一个较"小"数据与一个较"大"的数据一起运算时,系统将自动将"小"数据转换成"大"数据,再进行运算。而在方法调用时,实际参数较"小",而被调用的方法的形式参数数据又较"大"时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将"小"数据转换成"大"数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最"接近"的"大"数据并进行调用。这些类型由"小"到"大"分别为 (byte,short,char)--int--long--float—double。这里我们所说的"大"与"小",并不是指占用字节的多少,而是指表示值的范围的大小。

①下面的语句可以在Java中直接通过:

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

②如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如

char c='c'; int i=c;
System.out.println("output:"+i);

输出:output:99;

③对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。

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

输出:output:c;

强制转换

将"大"数据转换为"小"数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式: int n=(int)3.14159/2;可以想象,这种转换肯定可能会导致溢出或精度的下降。

2)表达式的数据类型自动提升, 关于类型的自动提升,注意下面的规则。

①所有的byte,short,char型的值将被提升为int型;

②如果有一个操作数是long型,计算结果是long型;

③如果有一个操作数是float型,计算结果是float型;

④如果有一个操作数是double型,计算结果是double型;

例, byte b; b=3; b=(byte)(b*3);//必须声明byte。

3)包装类过渡类型转换

一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:

①当希望把float型转换为double型时:

float f1=100.00f;
Float F1=new Float(f1);
double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法

②当希望把double型转换为int型时:

double d1=100.00;
Double D1=new Double(d1);
int i1=D1.intValue();

简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)

而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

4)字符串与其它类型间的转换

其它类型向字符串的转换

①调用类的串转换方法:X.toString();

②自动转换:X+"";

③使用String的方法:String.volueOf(X);

字符串作为值,向其它类型的转换

①先转换成相应的封装器实例,再调用对应的方法转换成其它类型

例如,字符中"32.1"转换double型的值的格式为:new Float("32.1").doubleValue()。也可以用:Double.valueOf("32.1").doubleValue()

②静态parseXXX方法

String s = "1";
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );

③Character的getNumericValue(char ch)方法

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);

总结:只有boolean不参与数据类型的转换

(1).自动类型的转换:a.常数在表数范围内是能够自动类型转换的

b.数据范围小的能够自动数据类型大的转换(注意特例)

int到float,long到float,long到double 是不会自动转换的,不然将会丢失精度

c.引用类型能够自动转换为父类的

d.基本类型和它们包装类型是能够互相转换的

(2).强制类型转换:用圆括号括起来目标类型,置于变量前

4.Java引用类型

Java有 5种引用类型(对象类型):类 接口 数组 枚举 标注

引用类型:底层结构和基本类型差别较大

JVM的内存空间:(1). Heap 堆空间:分配对象 new Student()

(2). Stack 栈空间:临时变量 Student stu

(3).Code 代码区 :类的定义,静态资源 Student.class

eg:Student stu = new Student(); //new 在内存的堆空间创建对象

stu.study(); //把对象的地址赋给stu引用变量

上例实现步骤:a.JVM加载Student.class 到Code区

     b.new Student()在堆空间分配空间并创建一个Student实例;

     c.将此实例的地址赋值给引用stu, 栈空间;

更多编程相关知识,请访问:编程教学!!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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