4. 変数とは値を入れる箱
Test01a.java
public class Test01a {
public static void main( String[] args ){
int a, b, c; 「変数 a, b, c を使う」と宣言
a = 5;
b = 3;
c = a + b;
System.out.println(“c=“+c);
}
}
スタック 計算機の中のメモリの一部
a b c
正確には,最初,値0が入っているが,値を設定せずに値を読み出すとコンパイルエラーとなるので,初期値は気にする必要はない.
2008年8月,データ解析の基礎,加藤,瀬々,金子. 4
5. 変数とは値を入れる箱
Test01a.java
public class Test01a {
public static void main( String[] args ){
int a, b, c;
a = 5;
b = 3;
c = a + b;
System.out.println(“c=“+c);
}
}
スタック 計算機の中のメモリの一部
a=5 b c
2008年8月,データ解析の基礎,加藤,瀬々,金子. 5
6. 変数とは値を入れる箱
Test01a.java
public class Test01a {
public static void main( String[] args ){
int a, b, c;
a = 5;
b = 3;
c = a + b;
System.out.println(“c=“+c);
}
}
スタック 計算機の中のメモリの一部
a=5 b=3 c
2008年8月,データ解析の基礎,加藤,瀬々,金子. 6
7. 変数とは値を入れる箱
Test01a.java
public class Test01a {
public static void main( String[] args ){
int a, b, c;
a = 5;
b = 3;
c = a + b;
System.out.println(“c=“+c);
}
}
スタック 計算機の中のメモリの一部
a=5 b=3 c=8
2008年8月,データ解析の基礎,加藤,瀬々,金子. 7
8. 変数とは値を入れる箱
Test01c.java
public class Test01c {
public static void main( String[] args ){
int a, b, c, d, e, f, sum; 変数 a, b, c, d, e, f, sum を使うと宣言
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
System.out.println(“sum=“+sum);
}
}
スタック
a b c d e f sum
2008年8月,データ解析の基礎,加藤,瀬々,金子. 8
9. 変数とは値を入れる箱
Test01c.java
public class Test01c {
public static void main( String[] args ){
int a, b, c, d, e, f, sum;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
System.out.println(“sum=“+sum);
}
}
スタック
a=3 b c d e f sum
2008年8月,データ解析の基礎,加藤,瀬々,金子. 9
10. 変数とは値を入れる箱
Test01c.java
public class Test01c {
public static void main( String[] args ){
int a, b, c, d, e, f, sum;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
System.out.println(“sum=“+sum);
}
}
スタック
a=3 b=1 c d e f sum
2008年8月,データ解析の基礎,加藤,瀬々,金子. 10
11. 変数とは値を入れる箱
Test01c.java
public class Test01c {
public static void main( String[] args ){
int a, b, c, d, e, f, sum;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
System.out.println(“sum=“+sum);
}
}
スタック
a=3 b=1 c=5 d e f sum
2008年8月,データ解析の基礎,加藤,瀬々,金子. 11
12. 変数とは値を入れる箱
Test01c.java
public class Test01c {
public static void main( String[] args ){
int a, b, c, d, e, f, sum;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
System.out.println(“sum=“+sum);
}
}
スタック
a=3 b=1 c=5 d=4 e f sum
2008年8月,データ解析の基礎,加藤,瀬々,金子. 12
13. 変数とは値を入れる箱
Test01c.java
public class Test01c {
public static void main( String[] args ){
int a, b, c, d, e, f, sum;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
System.out.println(“sum=“+sum);
}
}
スタック
a=3 b=1 c=5 d=4 e=7 f sum
2008年8月,データ解析の基礎,加藤,瀬々,金子. 13
14. 変数とは値を入れる箱
Test01c.java
public class Test01c {
public static void main( String[] args ){
int a, b, c, d, e, f, sum;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
System.out.println(“sum=“+sum);
}
}
スタック
a=3 b=1 c=5 d=4 e=7 f=6 sum
2008年8月,データ解析の基礎,加藤,瀬々,金子. 14
15. 変数とは値を入れる箱
Test01c.java
public class Test01c {
public static void main( String[] args ){
int a, b, c, d, e, f, sum;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
System.out.println(“sum=“+sum);
}
}
スタック
a=3 b=1 c=5 d=4 e=7 f=6 sum=26
2008年8月,データ解析の基礎,加藤,瀬々,金子. 15
32. 練習.実際にデバッガを動かしてみよう
プロジェクト名: test01 今回は,まず,すでに作成済みのファイルを開くだけ
Test01e.java 6! を計算する デバッガを実際に動かしてみよう
public class Test01e {
public static void main( String[] args ){
int a;
a = 6; 変数 a に値 6 を代入されているか確認せよ
a = a*5; 式 a*5 の値を計算して変数 a に代入されているか確認せよ
a = a*4; 式 a*4 の値を計算して変数 a に代入されているか確認せよ
a = a*3; 式 a*3 の値を計算して変数 a に代入されているか確認せよ
a = a*2; 式 a*2 の値を計算して変数 a に代入されているか確認せよ
a = a*1; 式 a*1 の値を計算して変数 a に代入されているか確認せよ
System.out.println(“a=“+a);
}
}
2008年8月,データ解析の基礎,加藤,瀬々,金子. 32
35. 平均を計算してみよう
Test01c.java
public class Test01c {
public static void main( String[] args ){
int a, b, c, d, e, f, sum;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
System.out.println(“sum=“+sum);
}
}
合計を6で割れば平均だから..
2008年8月,データ解析の基礎,加藤,瀬々,金子. 35
36. 平均を計算してみよう,失敗例
public class Test01c {
public static void main( String[] args ){
int a, b, c, d, e, f, sum, ave;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
ave = sum/6;
System.out.println(“ave=“+ave);
}
}
合計を6で割れば平均だから..↑赤字のように変更してみた
画面
ave=4
あれ!?平均は 4.33333…. のはずのに.
2008年8月,データ解析の基礎,加藤,瀬々,金子. 36
37. int とは整数型
「変数 a, b, c, d, e, f, sum, ave は int 型の箱」と宣言
public class Test01c { int 型とは整数型
public static void main( String[] args ){
を意味する
int a, b, c, d, e, f, sum, ave;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
ave = sum/6; int 型 + int 型 = int 型
System.out.println(“ave=“+ave); int 型 - int 型 = int 型
int 型 * int 型 = int 型
} int 型 / int 型 = int 型
}
2008年8月,データ解析の基礎,加藤,瀬々,金子. 37
38. int とは整数型
「変数 a, b, c, d, e, f, sum, ave は int 型の箱」と宣言
public class Test01c { int 型とは整数型
public static void main( String[] args ){
を意味する
int a, b, c, d, e, f, sum, ave;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
ave = sum/6; int 型 + int 型 = int 型
System.out.println(“ave=“+ave); int 型 - int 型 = int 型
int 型 * int 型 = int 型
} int 型 / int 型 = int 型
}
スタック
a=3 b=1 c=5 d=4 e=7 f=6 sum=26 ave=4
2008年8月,データ解析の基礎,加藤,瀬々,金子. 38
39. int とは整数型
「変数 a, b, c, d, e, f, sum, ave は int 型の箱」と宣言
public class Test01c { int 型とは整数型
public static void main( String[] args ){
を意味する
int a, b, c, d, e, f, sum, ave;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
ave = sum/6; int 型 + int 型 = int 型
System.out.println(“ave=“+ave); int 型 - int 型 = int 型
int 型 * int 型 = int 型
} int 型 / int 型 = int 型
}
整数型なので 26 / 6 = 4
スタック
a=3 b=1 c=5 d=4 e=7 f=6 sum=26 ave=4
2008年8月,データ解析の基礎,加藤,瀬々,金子. 39
40. 実数を使うなら double
「変数 a, b, c, d, e, f, sum, ave は double 型の箱」と宣言
public class Test02a { double 型とは実数型
public static void main( String[] args ){
を意味する
double a, b, c, d, e, f, sum, ave;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f; 「6」ではなく「6.0」と書くと
ave = sum/6.0; 実数型の定数を意味する
System.out.println(“ave=“+ave); double 型 + double 型 = double 型
} double 型 - double 型 = double 型
double 型 * double 型 = double 型
} double 型 / double 型 = double 型
実数型なので 26.0 / 6.0 = 4.3333..
スタック
a=3 b=1 c=5 d=4 e=7 f=6 sum=26 ave=4.3333..
2008年8月,データ解析の基礎,加藤,瀬々,金子. 40
41. 練習2-a. 平均のプログラム
Test02a.java プロジェクト名: test02
public class Test02a {
public static void main( String[] args ){
double a, b, c, d, e, f, sum, ave;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
ave = sum/6.0;
System.out.println(“ave=“+ave);
}
}
実際に,この部分を書き換えて int 型と double 型を試してみて
違いを確かめよう
2008年8月,データ解析の基礎,加藤,瀬々,金子. 41
45. 全部 double にする以外の方法は?
Test02a.java プロジェクト名: test02
public class Test02a {
public static void main( String[] args ){
double a, b, c, d, e, f, sum, ave;
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f;
ave = sum/6.0;
System.out.println(“ave=“+ave);
}
}
後から,double にしてしまうと,これまでうっかり int 型を想定して
作っていた部分がある場合,バグの原因になる.
2008年8月,データ解析の基礎,加藤,瀬々,金子. 45
46. もう一つの方法,型変換
Test02b.java
public class Test02b { 型を変換する方法を学ぼう
public static void main( String[] args ){
int a, b, c, d, e, f, sum; (double)式
double ave; 式を double 型にする
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6; (int)式
sum = a + b + c + d + e + f; 式を int 型にする
ave = ((double)sum)/6.0;
System.out.println(“ave=“+ave); sum int 型
} 「6」ではなく「6.0」と書くと (double)sum double 型
} 実数型の定数を意味する ((double)sum)/6.0 double 型
スタック
a=3 b=1 c=5 d=4 e=7 f=6 sum=26 ave=4.3333..
2008年8月,データ解析の基礎,加藤,瀬々,金子. 46
47. 練習2-b,型変換
Test02b.java プロジェクト名: test02 次のように書き換えたとき
public class Test02b { どうなるか試してみよ
public static void main( String[] args ){
int a, b, c, d, e, f, sum; (1)(ア)を int ave; に戻す
double ave; ...(ア) (イ)は ave=sum/6; に戻す
a = 3; b = 1; c = 5; d = 4; e = 7; f = 6;
sum = a + b + c + d + e + f; (2)(ア)を int ave; に戻す
ave = (int)(((double)sum)/6.0);
...(イ) (イ)はそのまま
System.out.println(“ave=“+ave);
} (3) (ア)はそのまま
} (イ)を
ave=(double)(sum/6);
また,なぜそうなるか
考えてみよう
2008年8月,データ解析の基礎,加藤,瀬々,金子. 47
50. 補足:暗黙のキャスト
• double 型から int 型への暗黙のキャストは許されてい
ない
– コンパイルエラーとして検出される
• int 型から double 型への暗黙のキャストは許されてい
る
double x; double x; double x;
int i; int i; int i;
x = 2.0; x = 2.0; i = 2;
i = x; i = (int)x; x = i;
コンパイルエラー OK OK
2008年8月,データ解析の基礎,加藤,瀬々,金子. 50