JAva基本タイプ


実は基礎は本当に重要です
テキスト
基本タイプ、または内蔵タイプと呼ばれ、
JAVAではクラスとは異なる特殊なタイプ.プログラミングで最も頻繁に使用されるタイプなので
面接問題にもその姿が欠かせません.この文章では、面接でよく受けるいくつかの面から、基本的なタイプに関する知識を振り返ってみましょう.
基本タイプは全部で8種類あり、それぞれ対応する包装類があります.
基本タイプは、文字タイプchar、ブールタイプboolean、数値タイプbyte、short、int、long、float、doubleの3つに分類できます.数値タイプは、整数タイプbyte、short、int、long、浮動小数点数タイプfloat、doubleに分けることもできます.JAVAの数値タイプには符号なしは存在せず、それらの値範囲は固定されており、機械ハードウェア環境やオペレーティングシステムの変化に伴って変化しない.実際、JAVAにはもう一つの基本タイプvoidが存在し、対応するパッケージクラスjava.lang.Voidもありますが、直接操作することはできません.数値タイプの基本タイプの値範囲については、対応するパッケージクラスに定数で定義されているため、強制的に記憶する必要はありません.次の例を見てください.
クリップボードに内容をコピー
コード:public class PrimitiveTypeTest {
public static void main(String[] args) {
// byte
System.out.println(" :byte :" + Byte.SIZE);
System.out.println(" :java.lang.Byte");
System.out.println(" :Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println(" :Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();

// short
System.out.println(" :short :" + Short.SIZE);
System.out.println(" :java.lang.Short");
System.out.println(" :Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println(" :Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();

// int
System.out.println(" :int :" + Integer.SIZE);
System.out.println(" :java.lang.Integer");
System.out.println(" :Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println(" :Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();

// long
System.out.println(" :long :" + Long.SIZE);
System.out.println(" :java.lang.Long");
System.out.println(" :Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println(" :Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();

// float
System.out.println(" :float :" + Float.SIZE);
System.out.println(" :java.lang.Float");
System.out.println(" :Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println(" :Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();

// double
System.out.println(" :double :" + Double.SIZE);
System.out.println(" :java.lang.Double");
System.out.println(" :Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println(" :Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();

// char
System.out.println(" :char :" + Character.SIZE);
System.out.println(" :java.lang.Character");
// Character.MIN_VALUE
System.out.println(" :Character.MIN_VALUE="
+ (int) Character.MIN_VALUE);
// Character.MAX_VALUE
System.out.println(" :Character.MAX_VALUE="
+ (int) Character.MAX_VALUE);
}
}

実行結果:
1、基本タイプ:byteバイナリ数:8
2、包装類:java.lang.Byte
3、最小値:Byte.MIN_VALUE=-128
4、最大値:Byte.MAX_VALUE=127
5、
6、基本タイプ:shortバイナリ数:16
7、包装類:java.lang.Short
8、最小値:Short.MIN_VALUE=-32768
9、最大値:Short.MAX_VALUE=32767
10、
11、基本タイプ:int 2進数:32
12、包装類:java.lang.Integer
13、最小値:Integer.MIN_VALUE=-2147483648
14、最大値:Integer.MAX_VALUE=2147483647
15、
16、基本タイプ:longバイナリ数:64
17、包装類:java.lang.Long
18、最小値:Long.MIN_VALUE=-9223372036854775808
19、最大値:Long.MAX_VALUE=9223372036854775807
20、
21、基本タイプ:floatバイナリ数:32
22、包装類:java.lang.Float
23、最小値:Float.MIN_VALUE=1.4E-45
24、最大値:Float.MAX_VALUE=3.4028235E38
25、
26、基本タイプ:doubleバイナリ数:64
27、包装類:java.lang.Double
28、最小値:Double.MIN_VALUE=4.9E-324
29、最大値:Double.MAX_VALUE=1.7976931348623157E308
30、
31、基本タイプ:charバイナリ数:16
32、包装類:java.lang.Character
33、最小値:Character.MIN_VALUE=0
34、最大値:Character.MAX_VALUE=65535
FloatとDoubleの最小値と最大値は科学的な記数法で出力され、最後の「E+数字」はEの前の数字に10の何倍を乗じたかを表します.例えば3.14 E 3は3.14です×1000=3140、3.14 E-3は3.14/1000=0.00314です.
実行結果を上記の表の情報とよく比較するとfloat、doubleの2種類の最小値がFloat.MIN_VALUE、 Double.MIN_VALUEの値が異なるのはなぜですか?実はFloat.MIN_VALUEとDouble.MIN_VALUEはそれぞれfloatとdoubleタイプで表される最小正数を指す.つまり0から±Float.MIN_VALUE間の値floatタイプは表示できません.0から±Double.MIN_VALUE間の値doubleタイプは表示できません.これは、これらの範囲内の数値が精度の範囲を超えているため、不思議なことではありません.
基本タイプはスタックに格納されるため、スタックに格納されている対応するパッケージクラスのインスタンスオブジェクトよりもアクセス速度が速くなります.Java 5.0(1.5)から、JAVA仮想マシン(Java Virtual Machine)は、基本タイプと対応するパッケージクラスとの自動変換を完了します.したがって、値、パラメータ伝達、および数学演算の際に、基本タイプを使用するようにパッケージクラスを使用しますが、これは、基本タイプを使用してパッケージクラスを呼び出す方法を意味するものではありません.また、voidを含むすべての基本タイプのパッケージクラスはfinal修飾を使用しているため、新しいクラスを拡張したり、書き換えたりすることはできません.
様々な数値タイプ間の付与値と変換はどのような法則に従いますか?次の例を見てみましょう.
クリップボードに内容をコピー
コード:public class PrimitiveTypeTest {
public static void main(String[] args) {
// byte ,
byte byte_a = 1;
// ,
// byte byte_b = 1000;
// long byte , , byte
// byte byte_c = 1L;

// short ,
short short_a = 1;
// ,
// short short_b = 70000;
// long short , , short
// byte short_c = 1L;

// short ,
int int_a = 1;
// ,
// int int_b = 2200000000;
// long int , , int
// int int_c = 1L;

// int long ,
long long_a = 1;
// long int , L( )
long long_b = 2200000000;
// ,
// long long_c = 9300000000000000000L;

// int float
float float_a = 1;
// long float
float float_b = 1;
// F( ) double , float
// float float_c = 1.0;
// float F( )
float float_d = 1.0F;
// double float , , float
// float float_e = 1.0D;
// ,
// float float_f = 3.5000000E38F;

// int double
double double_a = 1;
// long double
double double_b = 1;
// float double
double double_c = 1F;
// double ,
double double_d = 1.0;
// D( ) , double
double double_e = 1.0D;
// ,
// double double_f = 1.8000000000000000E308D;

// double byte , , byte
// byte byte_d = 1.0D;
// double short , , short
// short short_d = 1.0D;
// double int , , int
// int int_d = 1.0D;
// double long , , long
// long long_d = 1.0D;

// char
char char_a = 'a';
// int char
char char_b = 1;
// long char , , char
// char char_c = 1L;
// float char , , char
// char char_d = 1.0F;
// double char , , char
// char char_e = 1.0D;
// ,
// char char_f = 70000;
}
}

上記の例から、次のような結論が得られます.
1、文字接尾辞で識別されていない整数のデフォルトはintタイプです.文字接尾辞IDが付いていない浮動小数点数のデフォルトはdoubleタイプです.
2、整数の値がintタイプが表す範囲を超えている場合は、接尾辞「L」を増やさなければならない(大文字と小文字を区別せず、小文字のLはアラビア数字1と混同されやすいため、大文字で表すことをお勧めします).long型として表される.
3、「F」(大文字と小文字を区別しない)接尾辞を持つ整数と浮動小数点数はfloatタイプである.「D」(大文字と小文字を区別しない)接尾辞を持つ整数と浮動小数点数はdoubleタイプです.
4、コンパイラはコンパイル中にbyte、short、int、long、float、double、char型変数の値をチェックし、それらの値の範囲を超えるとエラーを報告します.
5、int型の値はすべての数値型の変数に与えることができる.long型の値はlong、float、double型の変数に与えることができる.float型の値はfloat、double型の変数に与えることができる.double型の値はdouble型変数にのみ割り当てられます.