[エントリーからソイルへのJava]データタイプの変換と演算子

データタイプの変換

Javaプログラムでは、計算に参加するために必要なデータは、データタイプの一貫性を保証する必要があります。データタイプに一貫性がない場合、タイプ変換が発生します。

①自動型変換

int型変数とbyte型変数が追加されます。結果はどのデータ型になりますか?

int i = 1;
byte b = 2;

操作の結果、変数の型はint型になります。これは、データ型の自動型変換の現象です。
自動タイプ変換:値の範囲が小さいタイプは、値の範囲が大きいタイプに自動的にプロモートされます。

public static void main(String[] args) {
    
    
 	int i = 1;
 	byte b = 2; 
 	//int类型和byte类型运算,结果是int类型 
 	int j = b + i;
 	System.out.println(j); //3
}

変換原理図
バイト型メモリは1バイトを占有し、int型で動作するとint型に昇格し、3バイトが自動加算されるため、計算結果はint型のままです。
ここに写真の説明を挿入

同様に、int型変数をdouble変数で操作すると、int型データは自動的にdouble型に昇格して操作されます。

public static void main(String[] args) {
    
     
  	int i = 1; 
  	double d = 2.5; 
  	//int类型和double类型运算,结果是double类型 
  	double e = d + i; 
  	System.out.println(e); //3.5 
}

変換ルール
小範囲タイプから大範囲タイプへのプロモート
byte、short、char-> int-> long-> float-> double

②強制型変換

1.5がint型の変数に割り当てられるとどうなりますか?コンパイルに失敗するため、割り当てないでください。doubleタイプは8バイト、intタイプは4バイトです。1.5はdoubleタイプであり、値の範囲はintよりも大きくなります。doubleは8リットルのケトル、intは4リットルのケトルであることが理解できます。大きなケトルの水を小さなケトルに直接入れることはできません。割り当てを成功させたい場合は、強制的な型変換によってdouble型をint型にキャストした場合にのみ値を割り当てることができます。
強制型変換:値の範囲が大きい型を値の範囲が小さい型に強制的に変換します。自動変換はJavaによって自動的に実行されますが、強制変換では手動で実行する必要があります。

数据类型 变量名 = (数据类型) 被转数据值;
int i = (int) 1.5;
System.out.println(i); // 1

注:①浮動
小数点を整数に変換し、小数点を直接キャンセルするため、データ損失精度が発生する場合があります
。②intを強制的にshortに変換すると、2バイトが切り捨てられ、データ損失が発生する場合があります。

ASCIIコードテーブル

コンピューター内にはバイナリの0と1のデータがありますが、コンピューターはどのようにして人間のキャラクターを直接認識することができますか?コーディングテーブルの概念が生まれました。
コーディングテーブル:対応する人間の文字と10進数でテーブルを形成します。
ここに写真の説明を挿入
すべての英語の文字、数字、記号に10進法で対応し、世界初のエンコーディングテーブルASCII(米国標準情報交換コード)が作成されました。
char型とint型の計算プロセスでは、char型の文字は最初にエンコーディングテーブルにクエリを実行して97を取得し、次に1と合計すると98になります。charタイプはintタイプにプロモートされます。charタイプは2バイト、intタイプは4バイトです。

オペレーター

算術演算子

ここに写真の説明を挿入
Java言語では、整数は上記の演算子を使用します。計算方法に関係なく、小数は取得されません。
注:
①文字列を連結する場合は、加算演算子に注意してください。文字列に直接加算することによってのみ、文字列に変換されます。
②分割 "/"両側が整数の場合、整数部分を取り、残りを四捨五入します。片側が浮動小数点の場合は、通常のルールで分割してください。
③「%」は残りの除数の記号であり、残りの小数は無意味です。結果の符号は残りの符号と同じです。
④整数は被除数であり、0を除数にすることはできません。そうでない場合、エラーが報告されます。

インクリメントおよびデクリメント演算子

i ++、追加および追加、最初にiの値を式全体に割り当て、次に1を
i ++ iに追加し、前に追加し、1をiに追加してから、結果を式全体に割り当てます。
減算演算子も同じです。理論的根拠。

public static void main(String[] args){
    
    
    int i = 1;
    int j = 1;
    j = i++;
    System.out.println(i); //2
    System.out.println(j); //1
    //先将i的值作为整个表达式i++的值
    //再将i加1
    //最后再执行赋值运算,将整个表达式i++的值赋给j
}
public static void main(String[] args){
    
    
    int a = 1;
    int b = 1;
    b = ++a;
    System.out.println(a); //2
    System.out.println(b); //2
    //先将a加1
    //然后将a加1的值赋给整个表达式++a
    //最后执行赋值运算,将整个表达式++a的值赋给b
}

割り当て演算子

割り当て演算子は、記号の右側の値を左側の変数に割り当てることです。
ここに写真の説明を挿入
注:+ =の形式の割り当て演算子は、結果を等記号の左側のデータ型に自動的に強制します。

public static void main(String[] args) {
    
    
    byte x = 10;
    x += 20; //相当于x = (byte)(x+20);
    System.out.println(x);
}

比較演算子

比較演算子は、2つのデータを比較する操作であり、操作の結果はブール値trueまたはfalseです。
ここに写真の説明を挿入

論理演算子

論理演算子は、2つのブール型の結果を接続するために使用される演算子であり、操作の結果はブールtrueまたはfalseです。
ここに写真の説明を挿入

三元演算子

三元演算子は、三元演算子とも呼ばれます。
形式:

数据类型 变量名 = 布尔类型表达式 ? 结果1 : 结果2;
String i = (12 % 2 == 0) ? "偶数" : "奇数";

三元演算子の計算方法:
ブール型式の結果は真であり、三元演算子の全体的な結果は結果1であり、これは変数に割り当てられます。
ブール型式の結果はfalseであり、3値演算子の全体的な結果は結果2であり、これは変数に割り当てられます。

おすすめ

転載: blog.csdn.net/weixin_51678389/article/details/109155241