Main195, 198, 199
何か大変ややこしいことになっている
『配列』を引数として渡したら、
配列の中身(値)でなく
配列がある番地をわたすようにしているらしい。
普通のint型(配列じゃない)を渡すときは普通「値渡し」が起こる。
値が関数側でコピーされるんだな。
コピーされたものにどう落書きしても元のものは平気なまま。
↑
↓
int配列型の場合は番地を渡すので、「参照渡し」(配列の先頭要素のある場所は何番地ですよー)をする。
呼び出した関数側で、配列にうにゃうにゃと落書きしてしまうと、
元の呼び出し元の配列もうにゃうにゃになってしまうということ。
--->Main195.java
package part1;
public class Main195 {
//int型配列を受け取り、すべての要素を表示するメソッド
public static void main(String[] args) {
int[] array = {1,2,3};
printArray(array);//関数printArrayに配列を渡す
}
public static void printArray(int[] array) {//配列で引数を受け取る
for (int element : array) {
System.out.println(element);
}
}
}
--->Main198.java
package part1;
public class Main198 {
//int型配列を「参照渡し」し、
//配列内の要素すべてに1を加えるメソッド
//呼び出し先で配列をいじると呼び出し元にも影響する
public static void main(String[] args) {
int[] array = {1,2,3};
incArray(array);//関数incArrayに配列を渡す
for(int i:array) {
System.out.println(i);
}
}
public static void incArray(int[] hoge) {
for (int i=0; i<hoge.length; i++) {
hoge[i]++;//いっこずつ値を増やす
}
}
}
--->Main199に関しては、「戻り値に配列もありですよ」というもの
package part1;
public class Main199 {
//戻り値に配列を用いる
public static void main(String[] args) {
int[] array = makeArray(3);
for(int i:array) {
System.out.println(i);
}
}
public static int[] makeArray(int size) {
int[] newArray = new int[size];//普通に配列の中身がいっこで値が3にならないものなのか??
for (int i=0; i<newArray.length; i++) {
newArray[i]=i;
}
return newArray;
}
}
javaの実行時にも引数を設定することが出来る
そのためのpublic static void main(String[] args) {
という記述だったのでした。
(いままでつかっていたやつ)
引数の型はString[]
そしてargsという変数に入れているんですよ
java Main199 aaa bbb ccc
みたいにコマンドライン引数というのができるらしい