Java---第 2 章
1人のオペレーター
演算子は、データの計算、代入、比較などを表すために使用される特殊な記号です。
- 算術演算子
- 代入演算子
- 関係演算子 (比較演算子)
- 論理演算子
- ビット演算子 (バイナリベースが必要)
- 三項演算子
算術演算子
分割例:(混ぜやすい)
public class study {
public static void main(String[] args){
System.out.println(5/2); //2
System.out.println(5.0/2);//2.5
double a = 5/2;
System.out.println(a);//2.0
}
}
説明:
5/2:どちらも整数で演算結果も整数
5.0/2:前者は浮動小数点型で演算結果も浮動小数点
double a = 5/2:最初に計算5/2 で 2 を取得し、double 型に小数点を加えたものに変更します
+= *= -+ これらにはキャストがあります
弾性率の使用:(混合が容易)
公式:a % b = a - b / b * b
public class study {
public static void main(String[] args){
System.out.println(10%3);//1
System.out.println(-10%3);//-1
System.out.println(10%-3);//1
System.out.println(-10%-3);//-1
}
}
インクリメントとデクリメント (混合可能)
public class study {
public static void main(String[] args){
int i = 8;
int k = i++;
System.out.println("k=" + k + "i=" + i);
}
}
k=8
i=9
単純な記憶方法: ++ が後に来て、最初に + を使用し、++ が前に来て、+ を最初に使用してから + を使用します。
面接の質問
最初の質問:
i=i++
public class study {
public static void main(String[] args){
int i = 1;
i=i++;
System.out.println(i);
}
}
答えは 1 です
- 最初に i の値を格納するための中間値 (temp であると想定) を作成します。
- 执行 i = i + 1
- 次に、 i = temp を実行します。
- i = 1
2 番目の質問:
i=++i
public class study {
public static void main(String[] args){
int i = 1;
i=++i;
System.out.println(i);
}
}
答えは 2
つあります。
- 执行 i = i + 1
- 最初に i の値を格納するための中間値 (temp であると想定) を作成します。
- 次に、 i = temp を実行します。
- i = 2
代入演算子
演算の値を指定された変数に代入することです
基本的な代入演算子:
=
代入演算子に準拠します
+=
-=
*=
/=
%=
+= を例に挙げますが、他の場合も同様です
a += b; -----> a = a + b;
関係演算子
関係演算子の結果は両方ともブール型つまり、if 構造の条件やループ構造の条件
で true または false の関係式がよく使用されます。 注: == および =
論理演算子
複数の条件 (複数の式) を接続するために使用され、最終結果もブール値になります。
論理演算ルールを説明します。
- 1.a&b:& は論理 ANDと呼ばれます。 ルール: a と b が同時に true の場合、結果は true、それ以外の場合は false
- 2. a&&b:&& はショートサーキットと呼ばれます。ルール: a と b が同時に true の場合、結果は true、そうでない場合は false
- 3.ab:論理 orと呼ばれます。ルール: a と b のどちらかが true の場合、結果は true、それ以外の場合は false
- 4.ab:ショートサーキット orと呼ばれます。ルール: a と b のいずれかが true の場合、結果は true、それ以外の場合は false
- 5.!a: これは、否定、または非操作と呼ばれます。a が true の場合、結果は false になります。 a が false の場合、結果は true になります。
- 6.a^b:論理 XORと呼ばれます。 a と b が異なる場合、結果は true、それ以外の場合は false
注: && と & の違い
&& 短絡 and: 最初の条件が false の場合、2 番目の条件は判定されず、最終結果は false となり、効率が高くなります。
& 論理積: 最初の条件が偽であるかどうかに関係なく、2 番目の条件を判定する必要があり、非効率です
開発では基本的にandを短絡するために&&を使用しますが、これは非常に効率的です。
注: || と | の違い
|| 短絡または: 最初の条件が true の場合、2 番目の条件は判定されず、最終結果は true となり、効率が高くなります。
| 論理和: 最初の条件が真であるかどうかに関係なく、2 番目の条件を判断する必要があり、非効率です
三項演算子
基本的な構文:
条件式?式 1: 式 2;
条件式がtrue の場合、演算の結果は式 1 になり
、それ以外の場合、演算の結果は式 2 になります。
例:
public class study {
public static void main(String[] args){
int a = 10;
int b = 99;
int result = a > b ? a++ : b--;
System.out.println(result);
}
}
操作の結果は次のようになります。
99
説明:
a=10、b=99、
a>b が false の場合、結果は b– になります。
要点:
- 式 1 と式 2 は、受け取り変数に代入できる (または自動的に変換できる) タイプである必要があります。
int a = 10;
int b = 99;
int c = a > b ? 1.1 : 2.2;// 报错
System.out.println(c);
着替える:
int a = 10;
int b = 99;
int c = a > b ? int(1.1) : int(2.2);
System.out.println(c);
これは主にデータ型に関する知識です
- 三項演算子はif-else ステートメントに変換できます
int res = a > b ? a++ : --b;
上位コードと下位コードは同じ意味です
if(a > b)
{
res = a++;
}
else:
{
res = --b;
}
演習: 最大 3 つの数値を見つけてください
public class study {
public static void main(String[] args){
int a = 10;
int b = 99;
int c = 100;
int max = (a > b ? a : b) >c ? (a > b ? a : b) : c;
System.out.println(max);
}
}
演算子の優先順位
優先順位は次のとおりです。
- ()、{}待って
- 単項演算子: ++
- 算術演算子
- シフト演算子
- 比較演算子
- 論理演算子
- 三項演算子
- 代入演算子
2 つの識別子
コンセプト:
- Java がさまざまな変数、メソッド、クラスに名前を付けるために使用する一連の文字は、識別子と呼ばれます。
- 自分自身の名前を付ける場所は識別子 (int num = 90) です。
ルール: (必ず従わなければなりません)
- 26 文字の大文字と小文字の英字、0 ~ 9、_ または $ で構成されます。
- 数字で始めることはできません(int 3b = 1;)
- キーワードと予約語は使用できませんが、キーワードと予約語を含めることはできます
- Java では大文字と小文字が厳密に区別され、長さは無制限
- 識別子にスペースを含めることはできません
仕様:(よりプロフェッショナル)
- パッケージ名: 複数の単語で構成される場合、すべての文字は小文字になります: aaa.bbb.ccc//例: com.hsp.crm
- クラス名、インターフェイス名: 複数の単語で構成される場合、すべての単語の最初の文字が大文字になります。例: TankShort [大きなこぶ]
- 変数名、メソッド名: 複数の単語が形成される場合、最初の単語の最初の文字は小文字になり、2 番目の単語の先頭では各単語の最初の文字が大文字になります。例: TankShort [小さなこぶ、と呼ばれます。ハンプ法】
- 定数名: すべての文字は大文字です。複数の単語には下線が付いています_: TAX_RATE
キーワード
予約語
Java 予約語: 既存の Java バージョンは使用されていませんが、将来のバージョンがキーワードとして使用される可能性があります。識別子に自分で名前を付けるときは、これらの予約語の使用を避けてください。
- 値による
- キャスト
- 未来
- ジェネリック
- 内側
- オペレーター
- 外側
- 休み
- だった
- 後藤
- 定数
3 つのコンソールがキーボード入力を受け取ります: スキャナー
プログラミングでは、ユーザーが入力したデータを受け取る必要がある場合、キーボード入力ステートメントを使用してデータを取得できます。
入力.java、スキャナー (オブジェクト) が必要です。これはスキャナーです。
ステップ:
- このクラスのパッケージ java.util.* をインポートします。
- このクラスのオブジェクトを作成します(変数を宣言します)
- 内部で関数を呼び出す
例:
import java.util.Scanner;//表示把java.util下的Scanner类导入
public class study {
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入姓名:");
String name = myScanner.next();
System.out.println("请输入年龄");
int age = myScanner.nextInt();
System.out.println("请输入薪水");
double sal = myScanner.nextDouble();
System.out.println("该人的信息如下:");
System.out.println("名字:" + name + "\n" + "年龄:"
+ age + "\n" + "薪水:" + sal);
}
}
名前を入力してください:
Bianjing Chengxiajun
年齢を入力してください
20年齢
を入力してください 給与
9600を入力してください
この人の情報は次のとおりです:
名前: Bianjing Chengxiajun
年齢: 20
給与: 9600.0
第四紀
システムの導入:
- バイナリ:0、1。2 がいっぱいの場合は 1 を入力し、0b または 0Bで始めます
- 10 進数: 0 ~ 9。10を1に。
- 8進数:0〜7。完全な 8 を 1 に変換し、数値 0 から始めて表します。
- 16 進数: 0 ~ 9 および A(10) ~ F(15)。0x または 0X で始まる完全な 16 を 1 に変換します。ここで、A から F は大文字と小文字が区別されません。
基数変換 (基本スキル)
他の基数を 10 進数に変換する
2進数から10進数へ
ルール:
最下位ビット (右) から始めて、各ビットの数値を抽出し、2 の (桁数 - 1) 乗を掛けて合計します。
ケース:
0b1011 を 10 進数に変換します。
8 進数から 10 進数へ
ルール:
最下位ビット (右) から始めて、各ビットの数値を抽出し、8 の (桁数 - 1) 乗を掛けて合計します。
16進数から10進数へ
ルール:
最下位ビット (右) から始めて、各ビットの数値を抽出し、16 の (桁数 - 1) 乗を掛けて合計します。
10 進数を他の基数に変換する
10進数から2進数へ
ルール:
商が 0 になるまで数値を 2 で割り続け、各ステップで得られた余りを逆にします。これは対応する 2 進数の場合です:
34
を対応する 2 進数に変換します ---->0b00100010
(1 バイトは 8 ビットを占め、6 ビットのみが取得され、上位ビットを埋めるために 2 つの 0 が使用されます)
10進数から8進数へ
ルール:
商が 0 になるまで数値を 8 で割り続け、各ステップで得られた余り (対応する 8 進数) を逆にします。
10進数から16進数へ
ルール:
商が 0 になるまで数値を 16 で割り続け、各ステップで得られた剰余 (対応する 16 進数) を反転します。
バイナリを他の基数に変換する
2進数から8進数へ
ルール:
下位ビットから始めて、3 桁のグループごとに 2 進数を対応する 8 進数に変換します。
ケース:
0b11010101 を 8 進数に変換します。
2進数から16進数へ
ルール:
下位ビットから始めて、4 つのグループごとに 2 進数を対応する 16 進数に変換します。
他の基数をバイナリに変換する
8進数から2進数へ
ルール:
8 進数の各桁を対応する 3 桁の 2 進数に変換する
ケース:
0237 を 2 進数に変換する
16進数から2進数へ
ルール:
16 進数の各桁を、対応する 4 桁の 2 進数に変換します。
元コード、逆コード、補コード
- 2 進数の最上位ビットは符号ビットです。正の数の場合は 0、負の数の場合は 1 です。
- 正の数の元のコード、逆コード、補数コードは同じです ( 3 つのコードが 1 つになっています)
- 負の数の 1 の補数 = 元のコード符号ビットは変更されず、他のビットは反転されます (0->1、1->0)
- 負の数の補数 = その補数 + 1。負の数の補数 = 負の数の補数 -1
- 0の逆符号、補数符号は0
- Java には符号なしの数値はありません。つまり、Java のすべての数値は符号付きです。
- コンピュータで計算する場合、 2の補数で計算されます。
- 操作の結果を見るときは、その元のコードを確認する必要があります。
ビット演算
System.out.println(4 << 3); // 4*2*2*2 = 32
System.out.println(15 >> 2);// 15/2/2 = 3