Javaの授業 9日目 ( オーバーロード、配列 ) | Let's Re⇒move

Javaの授業 9日目 ( オーバーロード、配列 )

・オーバーロード



引数の型と個数が違えば複数のメソッドに同じ名前を使える。


-----------------------------------------------------
public class MethodSample3 {
public static void main(String[] args) {
test();
test(0);
test("");
test(0,"");
test("",0);
}
public static void test(){
System.out.println("パターン1");
}
public static void test(int x){
System.out.println("パターン2");
}
public static void test(String str){
System.out.println("パターン3");
}
public static void test(int x, String str){
System.out.println("パターン4");
}
public static void test(String str, int x){
System.out.println("パターン5");
}
}
------------------------------------------------------



配列


①配列とは同じ型のデータを連続で並べたものです
② 配列の宣言

配列の宣言の仕方は次のうちどれかです。
型[] 変数名;
変数名 = new 型[要素数];
型[] 変数名 = new型[要素数];
型[] 変数名 = {データ , データ, データ, ・・・};

int型の場合

① int[] array; 配列の箱名だけ宣言する場合
array = new int[10];
※この書き方だけ2行かかります。
② int[] array = new int[10]; 配列の箱名+番号を宣言する場合
③ int[] array = {10, 20, 30,40}; 配列の箱名+番号+中身を宣言する場合

String型なら・・・
String[] array = {“a”, “b”, “c”};

注意点
配列を使う場合は型[]の[]を必ずわすれない

int x = new int[10];
int x = {10, 10,10};
はダメ

配列の最終要素番号はn-1になる
0から数えるのでそうなる。
int[] = new strArray[n]
なら最後は strArray[n-1]

箱3つなら
0番目、1番目、2番目
箱5つなら
0番目、1番目、2番目、3番目、4番目
3つのとき最後の番号は2
5つのとき最後の番号は4

サンプル①

-----------------------------------
public class Sample {
public static void main(String[] args){
//配列の宣言と代入
String[] strArray1 = new String[2];
strArray1[0] = "1";
strArray1[1] = "2";

System.out.println(strArray1[0]);
System.out.println(strArray1[1]);

//宣言と同時に代入
String[] strArray2 = {"1", "2","3"};

System.out.println(strArray2[0]);
System.out.println(strArray2[1]);
System.out.println(strArray2[2]);
}
}

------------------------------------

解釈

public class Sample {
public static void main(String[] args){
//宣言のみ
String[] =strArray3;
strArray3 = new String[2];
//配列の宣言と代入
String[] strArray1 = new String[2];
2個の要素を持つ配列を作った(strArray1[0],atrArray[1]という2つの箱を作った。
strArray1[0] = "1";
配列の0番目に”1”を代入した
strArray1[1] = "2";
配列の1番目に”2”を代入した

System.out.println(strArray1[0]);
System.out.println(strArray2[1]);

//宣言と同時に代入
String[] strArray2 = {"1", "2","3"};
3個の要素の1番目に”1”2番目に”2”3番目に”3”を代入して配列を作った(箱を3つ作った)
System.out.println(strArray2[0]);
System.out.println(strArray2[1]);
System.out.println(strArray2[2]);
}
}


public class Sample {
public static void main(String[] args){
//実践的な使い方
String[] strArray = {"A", "B", "C"};

for(int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
}
}


難しそうに見えるが、組み合わさったことでルールが変わることはない。
for文はfor文の、配列は配列のルールでしか動かない。
丁寧に順番に見ていけば迷うことはない。
遅くてもいいから飛ばさない

for文の読み方
初期化 i = 0
条件式
i < strArray.length
strArray.length ⇒ 配列の要素数が取れる書き方
⇒3
つまり、i < 3
次の一歩 i++
for(int i = 0; i < 3; i++){・・・

i = 0
strArray[0]=”A”
プロンプトに表示されるもの “A”

i = 1
strArray[1]=”B”
プロンプトに表示されるもの ”B”

i = 2
strArray[2] = “C”
プロンプトに表示されるもの ”C”

i = 3
i<3がfalseになるのでループから抜ける。


配列の感覚がつかめない人は箱を実際書く。

------------------------------------------------
ArraySample1.java

public class ArraySample1 {
public static void main(String[] args) {

// int型の配列をarrayという変数名で宣言
int[] array;

// arrayというint型の配列を5の大きさで確保
array = new int[5];

// 配列の各要素にデータを代入
array[0] = 10;
array[1] = 100;
array[2] = 30;
array[3] = 50;
array[4] = 200;

// 配列の各要素のデータを出力
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]);
System.out.println(array[4]);
}

}

-------------------------------------------------

わからない場合は常に箱を書いて数字を入れていく


-------------------------------------------------------------

ArraySample2.java

public class ArraySample2 {
public static void main(String[] args) {
// int型の配列をarrayという変数名で宣言し配列の大きさを5で確保
int[] array = new int[5];

// 配列の各要素にデータを代入
array[0] = 10;
array[1] = 100;
array[2] = 30;
array[3] = 50;
array[4] = 200;

// for文の繰り返しと変数の変化を用いて配列内の要素を全て出力
for(int i=0;i<5;i++){
System.out.println(array[i]);
}
}

}

-------------------------------------------------------------

for文
i=0 i<5 true
array[i]・・・array[0]・・・10
System.out.println(10);
プロンプトに10と表示される

i=1 i<5 true
array[i]・・・array[1]・・・100
System.out.println(100);
プロンプトに100と表示される

i=2 i<5 true
array[i]・・・array[2]・・・30
System.out.println(30);
プロンプトに30と表示される

i=3 i<5 true
array[i]・・・array[3]・・・50
System.out.println(50);
プロンプトに50と表示される

i=4 i<5 true
array[i]・・・array[4]・・・200
System.out.println(200);
プロンプトに200と表示される

i=5 i<5 false
for文から抜ける

ArraySample1.java

public class ArraySample3 {
public static void main(String[] args) {

//配列に初期データを与える
int[] array;
array = new int[]{10,100,20,50,200};
int sum = 0;

// for文の繰り返しを使い配列内の数値の合計値を計算
// 配列方の変数に「変数名.length」としてやることで配列の長さ(要素数)を取得することができる

for(int i = 0 ; i < array.length ; i++){
sum += array[i]; // sum = sum + array[i] という記述を省略した記述
}

System.out.println(sum);

}

}


int[] array = {1, 2, 3};




array.length⇒5 i<5

for文を見ていく
i = 0
sum += array[0];
sum = sum + array[0]
sum = 0 + 10 =10

i = 1
sum += array[1];
sum = sum + array[1]
sum = 10 + 100 =110

i = 2
sum += array[2]
sum = sum + array[2]
sum = 110 + 20 = 130

i = 3
sum += array[3]
sum = sum + array[3]
sum = 130 + 50 = 180

i = 4
sum +=array[4]
sum = sum + array[4]
sum = 180 + 200 = 380



順番どおりにいけば絶対答えはわかる

自分がやっている読み方で予想結果と実際の実行結果が食い違う人はどこか間違っている。

上のように1個ずつ順を追って読んでいくと分からない所が分かる。


ここまで学んだところで応用課題の提出の為1週間ほぼ自習らしいです。

その後Javaの序盤の最難関 「クラスとオブジェクト」へ。