データタイプの変換
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であり、これは変数に割り当てられます。