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のtoolをdouble型のtool2に変換代入(double型をint型には変換代入出来ない)
System.out.println("身長は" + tool2 "センチです。");
}
}
・キャスト変換
[小さな型に大きな型を代入する]
class Sample
{
public static void main(String[] args)
{
double tool2 = 160.5;
int tool = (int) tool2; ← double型のtool2をint型に変換して、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型の a が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型になる