忍者ブログ

からすまる日誌 java

応用(2) 配列を引数として渡す

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

応用(2) 配列を引数として渡す

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
みたいにコマンドライン引数というのができるらしい
PR

コメント

ブログ内検索

P R