FC2ブログ

配列≠行列≠整列≠マトリックス={u|u∈R(u<∞)}:4回目

Google先生が開発したAndoloidケータイ。Appleさんが開発したiPhoneは、
Javaでできています。

Javaでオンラインゲームのクライアントソフトつくればいいのに・・・。
そしたら、どんなOSでも動かせるのにねw!
(JVMかJREインストール済みならアベイラブル)

・・・。そーなのかー!自分で何とかすればいいんだw
やっぱ⑨でなきゃはじまらない!

今回は、配列を少々語っていきます。


1.宣言と代入
前回で説明したとおり・・
整数型の配列は・・

int [ ] a = new int [10];
int a [ ] = new int [10];
int b[ ];
b = new int[20];
double[ ] dd = new double [0xffff];

こんなかんじですねw
私は、C/C++のほうが長けているのですので
なんか・・・

int a[10];

こんなかんじで宣言してミスることもありましたが・・
ブログやってJavaScriptいじりまくってるおかげで克服w

long型は配列の添字にできないようですw
charとかintでやるのが普通っぽい

ちなみに・・

配列名 [ 添字 ] = 変数および定数 ;

で代入します。

先ほどの宣言を・・・

int a [] = { 1 , 2 , 3 , 4};

とすると、初期化になります。
ここから

n = a.length;

とすると、nには4が入ります。配列の長さを返すメソッドです。
代入方法については、

int a [ ] = {1,2,3,5,7,11,13,17,19};
int b [ ] = new int [10];
b[3] = a[6];  (b[3]には13が入る)

個別に代入する方法で、値代入といいます。
あっ!
添字の数え方ですけど・・・
この例の場合、bの配列の長さは10ってありますよね
添字では、0から9として表現されます。
0からスタートして配列で宣言したデータの個数(10)までということです。

ちなみに

int a [ ] = {1,2,3,5,7,11,13,17,19};
int b [ ] ;
b = a;

この代入は、すべてbにコピペされます。参照代入です。
値がコピーされるのではなくて、メモリ上で格納されているaの配列の頭のアドレスを同じにしているだけです。
aとb、どちらか値を変えれば互いに反映されます。

使い方は、配列の名前だけを渡せばいいだけです。


2.配列コピー!
①cloneメソッド

int a[ ] , b[ ] = { 10,20,30,40 };
a = (int [ ])b.clone();

これは、配列bの先頭アドレスをコピーして配列aに渡していることです。
参照代入とは違って、aとbは個別に扱われます。
(int [ ] )は、キャスト演算ですね!
代入の右項は、戻り値がわからないと左項に代入しても意味不明で問われます。
そこで、清く、正しく、美しく!宣言の型名で返してやるのです!
まぁ・・・おそらくclone()メソッドがvoidかString[]型で返しているからでしょうw
一次元配列しか使えないので、多次元の場合は、ループしてcloneメソッドする必要があります。

②arraycopyメソッド
以下のように宣言!

int to = new int[4] , from[ ] = {11,22,33,44};
System.arraycopy(from,0,to,0,from.length);

System.arraycopy( from配列を , 0の添字から , toの配列に , 0の添字から , from.length個コピー)
という意味です。
これも、多次元配列の場合は工夫が必要です。


3.多次元配列
宣言方法や代入、初期化はさほど変わらないです。

int a [ ] [ ] = new int[10][20]; (10×20の大きさの配列)
int b [ ] [ ] [ ] =new int [10][2][ ]; (3次元10x2x5)
b[0] = new int[5]; (以下int[5]の添字合わせないと非矩形配列になる)
b[1] = new int[5];
int c [ ] [ ] [ ] [ ] [ ] = new int[5][5][5][5][5]; (5x5x5x5x5の5次元配列)

int a [ ][ ] = { (5x3配列の初期化)
{ 1 , 2 , 3 , 4 , 5 } ,
{ 6 , 7 , 8 , 9 , 10 } ,
{ 11 , 12, 13, 14, 15}
} ;

{}の中にさらに{}ですねw

非矩形配列はnq

int nq [ ][ ] = {
{ 0 , 1, 2, 3 } ,
{ 10, 20, 30, 40, 50 } ,
{ 100 ,200}
} ;

この形のまま配列になるだけw
特別な意味は持ってないですよ


4.文字列配列
普通の配列と変わりはありませんが・・・
文字列を扱ってるので”(ダブルクォーテション)はつけてくださいね!
あと、普通の単一文字のchar型配列は、
'(シングルクォーテション)で必ず囲ってね!
String ss [ ] = new String[3] ;
String [0] = "AAAA";
String [1] = "BBB";
String [2] = "CCCCC";

String str [ ] = { "aaaa" , "bbbb" , "cccc"} ;


このようにして、配列も宣言と代入さえおぼえればもぅ簡単ですね
使う機会は・・・・
たくさん変数使うとき、
画像処理するとき、
が結構使われるかもですがw
せいぜい二次元配列くらいで、それより大きい配列は使う機会はないかもですなw



スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

ぶろぐかんりしゃ

SmartWoods
最近MoEは・・・
一休み

***** ひとこと *****

MoEの後継ともいわれる
Resonance gamez
完全スキルMMOが
気になるところ



********************


↓2016/3/26更新
My MoE









**********

NEWとらっくばっく
あーかいぶ
かてごりー
リンク
ぶろぐないけんさく
RSSふぃーど
おともだちになろ

この人とブロともになる