英文法探偵手帳 -37ページ目

英文法探偵手帳

英文法の文型を中心に調査した探偵手帳です。

L4.
・演算子は、+ - / % など
・計算の対象をオペランドと言う
・演算子は、+ - / % など
・変数に式を代入する
        int    num1    =    2;
        int    num 2   =    5; 
        int    num 3   =    num1    +    num2;
        int    num 4   =    num3    +    5;
・キーボードから受けた数値を計算する
(略)
        int    unm1    =    Integer.parseInt ( str1 );  ←  キーボード入力データを int 型に変換
        int    unm2    =    Integer.parseInt ( str2 );  ←  キーボード入力データを int 型に変換

        System.out.println( "足し算の結果は、"    +   ( num1    +    num2)     +    "です。");
    }
}

・主な演算子
+   =   *   ?   %     
++(インクリメント)      --(デクリメント)     ==(等価)   
>(より大きい)   >=(以上)   <(未満)   <=(以下)
・インクリメントは値を1増やす
      a+ +;  
   は、

      a    =    a    +    1;  
   と同じ意味
・デクリメントは値を1減らす
      a--;  
   は、

      a    =    a    -    1;  
   と同じ意味

・後置インクリメントと前置インクリメントは違う
       int    a    =    1;
       int    b    =    1;
    b    =    a++  ←  
後置インクリメントは、
                                 ①まず、b  =  a   で a の値を b に代入するので、
bの値は 1 になる
                                 ②次に、a をインクリメントして 1を加えるので、aの値は 2 になる
       int    a    =    1;
       int    b    =    1;
    b    =    ++
a  ←  前置インクリメントは、
                                 ①まず
、a をインクリメントして 1を加えるので、aの値は 2 になる
                                 ②次に、b に a の値を代入するので b の値は 2 になる
・代入演算子
+=    ・・・・   加算代入     a   +=    b;   ←  a + b の値を a に代入
                                       a    =    a    +    b ;  と同じ意味
・複合的な代入演算
(略)
         String str1    =    br.readLine( );  
         String str2    =    br.readLine( );  
         String str3    =    br.readLine( );  

        int    sum    =    0 ;
        snm    +=    Integer.parseInt ( str1 );  ←  sum    =   0    +   str1;
        snm    +=    Integer.parseInt ( str2 );  ←  前行のsum    =   0    +   str2;
        snm    +=    Integer.parseInt ( str2 );  ←  前行のsum    =   0    +   str3;

        System.out.println( "3つの数の合計は、"    +   sum     +    "です。") ;
    }
}

・その他の代入演算子
-=  ・・・    減算演算子
*=
  ・・・    乗算演算子
/=
  ・・・    除算演算子
%=
  ・・・    余剰演算子
&=  ・・・    理論積演算子
|=
  ・・・     理論和演算子
^=
  ・・・    排他的理論和代入
<<=
  ・・・  左シフト代入
>>=
  ・・・  右シフト代入
>>>=
  ・・・符号なし右シフト代入
※各記号間に空白は入れない
・シフト演算子は、2進数の数値の左右端桁を指定数シフトする
 ・
左シフト  5<<2
              [5]            00000101
                    << 2
                  ----------------
            [20]             00010100  ←  全体を左にずらして右端に2桁0を追加
 ・右シフト  5>>2
              [5]             00000101
                    
>> 2
                  ----------------
               [1]            00000001  ←  全体を右にずらして左端に2桁0を追加
・シフト指定数が、正の数なら0を、負の数なら1を追加する
・10進数で左へ1桁ずらす=10倍する
・10進数で左へ2桁ずらす=100倍する
・2進数で左へ1桁ずらす=2倍する
・2進数で左へ2桁ずらす=4倍する
・s/2  =  a>>1   ←2で割るときは右に1シフト
・s*2  =  a<<1   ←2倍するとき左に1シフト
・型変換
[大きな型小さな型を代入する]
class Sample
{
    public static void main(String[]    args)
    {
           int     tool    =    160;
           double     tool2    =    tool;       intのtooldouble型のtool2に変換代入(double型int型には変換代入出来ない)
            System.out.println("身長は"    +    tool2   "センチです。");
    }
}
・キャスト変換
[小さな型大きなを代入する]
class Sample
{
    public static void main(String[]    args)
    {
            double     tool2    =    160.5;
            int     tool    =    (int) tool2    double型のtool2int型に変換して、int型のtoolに代入(少数以下は切り捨てられる。大きな型への変換代入も可能。)
            System.out.println("身長は"    +    tool   "センチです。");
    }
}
・異なるどうしの演算は、大きな型に変換後に計算される
class Sample
{
    public static void main(String[]    args)
    {
            int     a    =   2  
          
  double     b    =    3.14;

            System.out.println("直径が"    +    a   "センチの円の");
            System.out.println("円周率は"    +    a*b   "センチです。");  ←  int型の double型に変換後、計算されるので、double型で出力される
    }
}
・同じ型どうしで計算した数値を、異なる型で出力する
class Sample
{
    public static void main(String[]    args)
    {
            int     a    =   5  
            int     b    =   4
  
            double     div    =   (double)a / (double)b  ←  変数 a , bがdouble型に変換後、計算されるので、double型で出力される

            System.out.println("5/4は"    +    div   "です。");  
    }
}
※オペランドの大きい方の型に合わせて出力されるので、オペランドの片方をdouble型にキャストすれば、出力される数値はdouble型になる