多次元配列
int [][] scores = { { a,b,c } {d,e } };
1次元配列int scores配列はそれぞれの2次元配列int[] scores配列(アドレス)を含めている。
長さは2だ。
2次元配列int scores[]配列は1次元配列int scoresにより2つが存在している。
int[0] scores(左)は{a,b,c,}の値があり、長さは3である。
例)int[0][0] scores = a; int[0][1] scores = b; int[0][2] scores = c;
int[1] scores(右)は{d,e}の値があり、長さは32ある。
例)int[1][0] scores = d; int[1][1] scores = e;
new演算子を使用して生成
1) 事前に長さを知ってる場合
int [][] scores = new int[2] [3];
2)2次元配列の長さが異なる場合
int [][] scores = new int[2] [];
scores[0] = new int[3]
scores[1] =new int[2]
String型の配列
基本データー型の配列はインデック(配列)に直接、値を保存できる。
しかし、Class(String)とInterface配列は、参照型変数のように、その値ではなく、アドレスを保存する。
Stringの文字列は、同じ文字列であれば、自動的に同じアドレスを参照しているが、
new演算子で生成した場合、他のヒープ領域に保存される。
配列の複製
配列は一度、生成された以上長さを変更することができない。
例えば、長さを3から5に伸ばしたい場合は、二つの手がある。
1)for文を活用し、複製することで解決する。
2)Systemのarraycopy()メソッドを活用する。
System.arraycopy(原本配列、複製を始めるインデックス、新しい配列、ペーストするインデックス、複製する長さ)
例)System.arraycopy(oldstrArray,0,newStrArray,0,oldStrArray.length);
この場合、OldStrArrayとNewStrArrayは異なる配列だが、同じ値を持ってるため、各配列のインデックスは
同じアドレスを含め、同じオブジェクトを参照する。
OldStrArrayの値("java","array","copy") ==NewStrArrayの値("java","array","copy")
配列の総合
一つの配列の要素の総合を算出する際に、for文の条件式(カウンタ変数)と増減式になしで簡単に算出する方法がある。合計を代入する変数と配列の要素の値を代入する変数を宣言し、活用することができる。
int[] scores = {95,88,77,98,96}
int sum=0;
for(int score: scores){
sum = sum + scores //sum += scoresもok!
}
Stringタイプに使う場合は文字列を結合することが分かる。
String args[]
args[]はパラメーター(仮引数)として、アーギュメント(実引数)をインプットする際に使われる。
すべてのクラスはmainメソッドから実行され、インプットがある場合、そのインプットした実引数を入れるパラメーターが必要になるため、args[]がその引数をこめる器になる。
今は実引数がないため、演算をせずに終了されるが、eclipseでインプットのアーギュメントを入れてみたり、
cmdを活用して、インプットすることもできる。
例)cd classfileがあるdirectory
->
java ch05.sec11.MainStringArrayArgument 10 20
'IT自主学習 (2023.05.23~) > Java(2023.05.23~)' 카테고리의 다른 글
プログラミング自主学習 40日目 Class/field/constructor (0) | 2023.07.05 |
---|---|
プログラミング自主学習 39日目 Enum/Object (0) | 2023.07.04 |
プログラミング自主学習 37日目 coding test 5問題 (0) | 2023.07.02 |
プログラミング自主学習 36日目 coding test 1問題 (0) | 2023.07.01 |
プログラミング自主学習 35日目 参照型(配列) (0) | 2023.06.30 |