I. 概要
Javaのデータ型は「基本データ型」と「参照データ型」の2つに分類されます。
2. 基本的なデータ型
データの種類 | 意味 | デフォルト | 範囲 | ストレージサイズ (バイト) | |
---|---|---|---|---|---|
整数 | バイト | バイト | 0 | -128~127 | 1 |
整数 | 短い | 短整数 | 0 | -2^15 ~ 2^15-1 | 2 |
整数 | int [デフォルト] | 形成外科 | 0 | -2^31 ~ 2^31-1 | 4 |
整数 | 長さ | 長整数 | 0L | -2^63 ~ 2^63-1 | 8 |
浮動小数点 | 浮く | 単一フロート | 0.0f | 1.4e-45 ~ 3.4e+38 | 4 |
浮動小数点 | ダブル [デフォルト] | 二重浮動小数点 | 0.0d | 4.9e-324 ~ 1.798e+308 | 8 |
文字タイプ | 文字 | 文字タイプ | 「u0000」 | 「\u0000」から「\uFFFF」 | 2 |
ブール値 | ブール値 | ブール値 | 間違い | 0(偽)~1(真) | 1 |
実際の開発プロセスでは、整数のデフォルトの型はint
、浮動小数点のデフォルトの型は であることに注意してくださいdouble
。
package com.itfeiniu.hello;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
byte b = 100;
short s = 20;
int i = 30;
long l = 452422421123L;//长整型赋值时,值的最后需要添加L/l符号
float f = 3.14f;//浮点型赋值时,值的最后需要添加F/f符号
double d = 56.45;
char ch1 = 'a';
char ch2 = '中';
char ch3 = 'A';
int ch4 = ch3;
boolean be = true;
System.out.println(ch4);
}
}
数値のデフォルトのタイプはint
type です。452422421123
実際にはlong
以下の範囲はありませんが、すでに範囲を超えているint
ため、最後に追加しないとデフォルトで typel/L
とみなされint
、エラーが報告されます。範囲を超えています。
long l = 452422421123L;//长整型赋值时,值的最后需要添加L/l符号
小数点を含むすべての浮動小数点数はdouble
デフォルトで型であるため、double
に 10 進数の型を代入するとエラーが報告され、その 10 進数が単精度型であるというステートメントを最後にfloat
追加する必要があります。f/L
float
float f = 3.14f;//浮点型赋值时,值的最后需要添加F/f符号
3. 参照タイプ
- Java では、参照型の変数は C/C++ ポインターに非常に似ています。参照型はオブジェクトを指し、オブジェクトを指す変数は参照変数です。これらの変数は、宣言時に Employee、Puppy などの特定の型として指定されます。変数が宣言されると、その型を変更することはできません。
- オブジェクトと配列は参照データ型です。
- すべての参照型のデフォルト値は null です。
- 参照変数は、互換性のある任意の型を参照するために使用できます。
- 例:
Site site = new Site("Runoob")
4. 型変換
1. 自動型変換
整数、実数 (定数)、および文字データは混合演算できます。演算では、異なる型のデータを同じ型に変換してから演算を実行します。
型の範囲が狭い変数は、型の範囲が広い変数に直接コピーできます。ここでの範囲は、メモリのストレージ サイズではなく、値の範囲を指します。
具体的なルールは次のとおりです。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
8 バイトを占有していることがわかりますlong
が、値の範囲が比較的float
小さいため、それでも型long
に割り当てることができます。float
以下は、short を int に変換できるが、byte に代入できないことを示しています。
short a = 10;
byte b = a; //提示报错
int c = a; //正常
データ型の変換は、次のルールを満たす必要があります。
-
boolean
型にキャストできません。 -
オブジェクト型を無関係なクラスのオブジェクトに変換することはできません。
-
大容量型を小容量型に変換する場合はキャストする必要があります。
-
変換中にオーバーフローや精度の低下が発生する可能性があります。
2. 必須の型変換
-
条件は、変換されたデータ型に互換性があることです。
-
形式: (type)value type はキャストされるデータ型インスタンスです。
int i1 = 123;
byte b = (byte) i1;//强制类型转换为byte
byte c = i1; //报错
3. 式の自動型変換
式内で、範囲の狭い型の変数は、式内で範囲の広い型に自動的に変換され、演算に参加します。
byte、short、char->int->long->float->double
予防:
- 式の最終的な結果の型は、式内の最上位の型によって決まります。
- 式では
byte
、short
、char
は直接int
型に変換されて演算に参加します。
byte a = 10;
int b = 20;
double c = 30.0;
double d = a + b + c;
System.out.println(d);
//输出:60.0