Java---第 2 章 (演算子、識別子、スキャナ、16 進数変換)

ここに画像の説明を挿入

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

おすすめ

転載: blog.csdn.net/weixin_72138633/article/details/131156908