Java の 8 つの主要なデータ型とは何ですか?

青灯夜游
リリース: 2023-02-02 10:17:23
オリジナル
48711 人が閲覧しました

8 つの主要なデータ型: 1. バイト (ビット)、最大データ ストレージ容量は 255、2. short (短整数)、最大データ ストレージ容量は 65536、3. int (整数)、最大データ記憶容量は 2 の 32 乗マイナス 1 です; 4.long (長整数)、最大データ記憶容量は 2 の 64 乗マイナス 1 です; 5. float (単精度浮動小数点数)、f は次のとおりです値を直接代入する場合に数値の後に追加する、または F、6. double (倍精度)、7. boolean (ブール型)、8. char (文字)。

Java の 8 つの主要なデータ型とは何ですか?

#このチュートリアルの動作環境: Windows7 システム、Java8 バージョン、DELL G3 コンピューター。

1. Java の 8 つの基本データ型

Java には 8 つの基本的な型があり、基本型は文字型 char、ブール型 boolean、数値の 3 つのカテゴリに分類できます。 value 型 byte、short、int、long、float、double。数値型は、整数型 byte、short、int、long と浮動小数点型 float および double に分類できます。 JAVA には符号なしの数値型はありません。値の範囲は固定されており、マシンのハードウェア環境や

オペレーティング システム が変化しても変更されません。実際、JAVA には別の基本型 void があり、これにも対応するパッケージング クラス java.lang.Void がありますが、それらを直接操作することはできません。 8 中型の表現範囲は次のとおりです。

byte: 8 ビット、格納データの最大量は 255、格納データ範囲は -128 ~ 127 です。

short: 16 ビット、最大記憶容量は 65536、データ範囲は -32768 ~ 32767 です。 #int: 32 ビット、最大データ記憶容量は 2 の 32 乗マイナス 1、データ範囲は負の 2 の 31 乗から正の 2 の 31 乗マイナスまでです1.

long: 64 ビット、最大データ記憶容量は 2 の 64 乗マイナス 1、データ範囲は負の 2 の 63 乗から正の 2 乗までです。 63 マイナス 1 。

float: 32 ビット、データ範囲は 3.4e-45 ~ 1.4e38、直接代入する場合は数値の後に f または F を追加する必要があります。

double: 64 ビット、データ範囲は 4.9e-324 ~ 1.8e308、代入時に d または D を追加することも追加しないこともできます。

ブール値: 値は true と false の 2 つだけです。

char: 16 ビット、Unicode コードを格納し、一重引用符で値を割り当てます。

Java は各単純型のサイズを決定します。これらのサイズは、マシン アーキテクチャが変わっても変わりません。このサイズの不変性が、Java プログラムの移植性が高い理由の 1 つです。次の表は、Java で定義されている単純型、それらが占める 2 進数の数、および対応するラッパー クラスを示しています。

##単純な型booleanbytechar##2 進数 バイト文字短い整数ロング

short

Int

long

float

double

void

#1

8

16

16

32

64

32

64##

#--

ラッパー クラス

ブール値

フロート

##ダブル

##ボイド

# ##################################

数値型の基本型の値の範囲については、対応するパッケージング クラスで定数の形で定義されているため、無理に覚える必要はありません。例:

基本タイプ byte 2 進数: Byte.SIZE 最小値: Byte.MIN_VALUE 最大値: Byte.MAX_VALUE

基本タイプ short 2 進数: Short.SIZE 最小値: Short 。 MIN_VALUE 最大値:Short.MAX_VALUE

基本型 char 2 進数:Character.SIZE 最小値:Character.MIN_VALUE 最大値:Character.MAX_VALUE

基本型 double 2 進数:Double .SIZE 最小値値: Double.MIN_VALUE 最大値: Double.MAX_VALUE

注: float 型および double 型の最小値は、Float.MIN_VALUE および Double.MIN_VALUE の値と同じではありません。 Float.MIN_VALUE と Double.MIN_VALUE は、それぞれ float 型と double 型で表現できる最小の正の数値を指します。つまり、float 型では 0 から ±Float.MIN_VALUE までの値を表現できず、double 型では 0 から ±Double.MIN_VALUE までの値を表現できない場合があります。これらの範囲の値は精度の範囲外であるため、これは驚くべきことではありません。

FloatとDoubleの最小値と最大値を科学表記法で出力します末尾の「E数値」はEの前の数値を何倍10するかを示します。たとえば、3.14E3 は 3.14×1000=3140、3.14E-3 は 3.14/1000=0.00314 です。

Java の基本型はスタックに格納されるため、ヒープに格納される対応するラッパー クラスのインスタンス オブジェクトよりもアクセス速度が速くなります。 Java5.0 (1.5) 以降、JAVA 仮想マシン (JavaVirtual Machine) は、基本型とそれに対応するラッパー クラス間の自動変換を完了できます。したがって、代入、パラメータ転送、および数学的演算を実行するときに、ラッパー クラスを基本型と同じように使用しますが、これは、ラッパー クラスでのみ使用できるメソッドを基本型を通じて呼び出すことができるという意味ではありません。さらに、すべての基本型 (void を含む) のラッパー クラスは最終的な変更を使用するため、それらを継承して新しいクラスを拡張したり、そのメソッドをオーバーライドしたりすることはできません。

基本型の利点: データの保存が比較的シンプルで、操作効率が比較的高い

パッケージ化クラスの利点: 簡単なものもあります。たとえば、コレクションの要素はオブジェクト型でなければなりません。これは Java のすべてを満たします オブジェクトの考え方

2. Java の定数

16 進数の整数定数: 16 進数で表現する場合、0x または 0x で始まる必要があります。 0X。0xff、0X9A など。

8 進整数定数: 8 進数は 0123、034 のように 0 で始まる必要があります。

長整数型: 長整数型は、9L、342L など、L で終わる必要があります。

浮動小数点定数: 10 進定数のデフォルトの型は double であるため、f (F) を float 型の後に追加する必要があります。小数を含む変数もデフォルトで double 型になります。

例:

float f;
f=1.3f;//必须声明f。
ログイン後にコピー

文字定数: 文字定数は 2 つの一重引用符で囲む必要があります (文字列定数は 2 つの二重引用符で囲まれることに注意してください)。 Java の文字は 2 バイトを占めます。よく使用されるエスケープ文字:

①\r はキーボード入力を受け入れることを意味し、Enter キーを押すのと同じです。

②\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, 栈空间;

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

以上がJava の 8 つの主要なデータ型とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート