この記事の出所:GitHubにはこちらをクリック・ || GitEEは・こちらをクリック
まず、基本的なタイプ
1、基本的なタイプ
作成するには、Newを使用しないでください、参照変数の非配信、およびスタックに直接変数の値を宣言し、大きさは、より効率的な経営環境の変化に伴って変化しません。新しい参照の使用は、ヒープ上に格納されたオブジェクトを作成しました。
2、基本的な情報
次の基本的なタイプを含める:バイト、短い、int型、長い、フロート、ダブル、ブール、文字を、大きさの範囲は、関連の方法で表示することができます。
public class IntType01 {
public static void main(String[] args) {
System.out.println("进制位数:"+Integer.SIZE);
System.out.println("最小值:"+Integer.MIN_VALUE);
System.out.println("最大值:"+Integer.MAX_VALUE);
System.out.println("进制位数:"+Double.SIZE);
System.out.println("最小值:"+Double.MIN_VALUE);
System.out.println("最大值:"+Double.MAX_VALUE);
}
}
第二に、ユースケース
図1に示すように、型変換
自动转换
:データ型の小さな範囲が自動的にデータタイプの広い範囲に変換することができます。
强制转换
:1つのデータタイプは、別のデータ型に変換します。
类型提升
:異なるタイプの計算式データは、タイプが自動的に広い範囲を持ち上げています。
public class IntType02 {
public static void main(String[] args) {
// 自动转换
int i = 112 ;
long j = i ;
System.out.println(j);
// 强制转换
double d = 13.14 ;
int f = (int)d;
System.out.println(f);
// 类型提升
long r = i * j ;
System.out.println(r);
}
}
注意:変換の種類は、ほとんどの懸念は、問題の大きさの範囲である必要がありました。
2、パッケージタイプ
ラッパー、ラッパーの種類が登場し、追加のプロパティとメソッドを追加するオブジェクト指向の考え方と一致しない基本データ型は、自動パッケージング機能は、パッケージ型のベース型に変換することができます。それぞれのJavaプリミティブ型パッケージタイプ、整数、ダブル、ロング、ブール、バイトなどを提供します。
public class IntType03 {
public static void main(String[] args) {
Integer int1 = null ;
Double dou1 = 13.14 ;
Long lon1 = 123L ;
}
}
デフォルト値はnullの整数変数整数命令が試験のように、0点0の値と未割り当ての違いを区別することができているとの違いは、試験を受けていませんでした。
3、文字型
char型の変数は、Unicode文字エンコーディングを格納するために使用され、ユニコード文字セットは、文字が含まれています。
public class IntType04 {
public static void main(String[] args) {
char cha1 = '知';
System.out.println(cha1);
}
}
注意
:ユニコード文字エンコーディングに集中しそこに含まれていない場合があり特別珍しい言葉。
図4に示すように、割り当て及び動作
+= 和 =
区別:short s1=1;s1=s1+1与short s1=1;s1+=1;
問題。
public class IntType05 {
public static void main(String[] args) {
short s1 = 1 ;
// s1 = s1 + 1 ; // 变异错误:s1自动向int类型转换
s1 += 1 ;
System.out.println(s1);
}
}
+=
オペレータは、Java言語を予め定められている、コンパイラは、プロセスが、正しくコンパイルすることが可能であることが認識されるであろう。
5、ブール
二つの論理値:true
とはfalse
、通常の動作の結果との間の関係を表すために使用されます。
public class IntType06 {
public static void main(String[] args) {
// 存在精度损失问题:0.30000000000000004
System.out.println(3*0.1);
// true
System.out.println(0.3 == 0.3);
// false
System.out.println(3*0.1 == 0.3);
}
}
三、フロートとDUBBLE
1、基本的な考え方
これらの2つのタイプは、ほとんどの場合、彼らは関係との区別を理解していない、我々は最初のいくつかの基本的な概念を理解しなければならないと述べたことがあります。
浮点数
:コンピュータで任意の実数aを近似します。具体的には、塩基(コンピュータで通常2)を乗じた固定小数点または整数の実数で与えるために、整数の乗
单精度浮点数
:単精度浮動小数点実数の小数部分で使用され、それは一般的に科学技術計算のために使用されます。これは、4バイト(32ビット)のメモリ空間を占有します
双精度浮点数
:倍精度浮動小数点(ダブル)は浮動小数点数を格納するために64ビット(8バイト)、コンピュータのデータ・タイプです。
2、比較分析
- フロート基本的な説明
位数:32
最小值:1.4E-45
最大值:3.4028235E38
- ダブル基本的な説明
位数:64
最小值:4.9E-324
最大值:1.7976931348623157E308
- ケースの説明
floatとdoubleの変換ステートメントと関連するプレゼンテーションケース。
public class IntType07 {
public static void main(String[] args) {
// float 声明
float f1 = 12.3f ;
// double 声明
double d1 = 13.4 ;
// 向下转型,需要强制转换
float f2 = (float) d1 ;
System.out.println("f1="+f1+";d1="+d1+";f2="+f2);
}
}
第四に、高精度タイプ
1、BigIntegerの
任意のサイズの演算、及び演算過程の任意の損失を持っていない、該当する基本的なタイプの整数支持体、オペレータは、比較的複雑な動作速度は自然に低下するとなろう。
2、BigDecimalを
通常、正確な通貨のために使用される任意の精度の固定小数点数を、サポート、会社の日々の開発では、ハード要件が通常あります。
public class IntType08 {
public static void main(String[] args) {
BigDecimal dec1 = new BigDecimal(3.0) ;
BigDecimal dec2 = new BigDecimal(2.11) ;
// 精确加法运算
BigDecimal res1 = dec1.add(dec2) ;
System.out.println(res1);
// 精确减法运算,并截取结果
// HALF_UP:四舍五入
BigDecimal res2 = dec1.subtract(dec2);
System.out.println(res2.setScale(1, RoundingMode.HALF_UP));
// 精确乘法运算
BigDecimal res3 = dec1.multiply(dec2) ;
System.out.println(res3.doubleValue());
// 精确除法运算,并截取结果
// ROUND_DOWN:直接按保留位数截取
BigDecimal res4 = dec1.divide(dec2,2,BigDecimal.ROUND_DOWN);
System.out.println(res4);
}
}
第五に、ソースコードのアドレス
GitHub·地址
https://github.com/cicadasmile/java-base-parent
GitEE·地址
https://gitee.com/cicadasmile/java-base-parent