リスキルテクノロジー

Javaプログラミング ~陥りやすいミス③~

今回で3回目となる
「Javaプログラミングでの陥りやすいミス」
シリーズ

今回のテーマは『配列の扱い方』です。

さて、配列とは何だったでしょか?

「複数の値を連続的に並べて
ひとまとめに扱うデータ構造」

これを配列と言います。

では、Javaで配列を使用するには?

まず初めに、
「配列の宣言と生成」が必要となります。

配列の宣言と生成

配列の宣言・生成方法には、
次の2種類があります。

① 型名[] 配列名;
配列名 = new 型名[要素数];

② 型名[] 配列名 = new 型名[要素数];

上記の2つは同じ意味で、
単に、①を1行で表現したものが
②になります。

また、配列を生成する際には、
new演算子を使用し、

配列に格納する値(要素)の数を
「要素数」で指定します。

具体的には、以下のようになります。

① int[] a;
a = new int[3];
② int[] a = new int[3];

上記は、整数の値を3つ格納できる
aという配列になります。

しかし、以下のような書き方は、
コンパイルエラーになりますので
注意してください。

int[3] a;

配列の初期化

配列の宣言と生成が終わったところで、
今度は配列に値を入れていきます。

配列に初めて値を入れることを
「配列の初期化」と言います。

配列の初期化方法は、
次の3種類があります。

① int[] a = new int[3];

a[0] = 10;
a[1] = 20;
a[2] = 30;

② int[] a = new int[]{10, 20, 30};
③ int[] a = {10, 20, 30};

①は、
配列の宣言と生成が終わった後、
[]の中に
配列の何番目に値を入れるかを
指定して初期化しています。

②は、
配列の生成と同時に値を指定して
初期化しています。

ただし、
以下のように要素数を指定して
初期化すると、

コンパイルエラーになるため
注意が必要です。

int[] a = new int[3]{10, 20, 30};

要素数を指定しなくとも、
{}内の値の数がそのまま要素数となる、
ということです。

③は、一見すれば
コンパイルエラーになりそうですが、
Javaでは、
new演算子を使用せずに宣言した配列に
直接値を入れて初期化することもできます。

配列の代入

ここまで、「配列の宣言と生成」と
「配列の初期化」について
方法と注意点をお話してきました。

最後に、
配列を扱う上で一番陥りやすいミス
「配列の代入」についてみていきます。

では早速、
以下の例を考えてみましょう。

int[] a = new int[]{10, 20, 30};
int[] b = a;

a[0] = 50;
System.out.println(b[0]);

さて、上記の結果は
どう表示されるでしょうか。

10

ではありません。

50

と表示されます。

なんで??と思われた方は、
前回の「文字列の比較」の最後を
思い出してください。

上記の例は、

String str1 = new String("あ");
String str2 = str1;

と同じです。

"あ"という文字列は1つだけ生成され、
変数str1と変数str2には同じ"あ"の場所が
格納されます。

今回の場合も、
{10, 20, 30}という値は1つだけ生成され、
配列aと配列bには同じ{10, 20, 30}の場所が
格納されるのです。

配列も文字列同様、
new演算子によって生成されます。

そのため、
配列名(aやb)には実際の値ではなく、
その値の場所が格納されます。

new演算子は、
生成した値の格納場所を返す
「演算子」なのです。

kohsaka

これにより、
配列aの値を変更することは、
配列bの値を変更することになるため、
b[0]の値も50になります。

配列を扱う際には注意点が多いので、
慎重にプログラミングしてください。

-------------------------------------------------------
■□お知らせ□■ 新しいLAブログができました。
初心者向け】快適なプログラミング環境を作るパソコン選びのポイント6つ
どのPCを買えばいいか迷いますよね。他にも役立つ情報が盛りだくさん。
是非ご覧ください。
------------------------------------------------------

【初心者向け】快適なプログラミング環境を作るパソコン選びのポイント6つ

パソコン

プログラミングを習得するにあたって必要なものは色々ある。しかし何はなくとも、まずはパソコンがないと始まらない。

しかし、いざ購入するとなると、どんなパソコンを選べば良いのかわからないという方が多いのも現状だ。そこでこのページでは、プログラミングに適したパソコンの選び方や、プログラミングにおすすめの周辺機器などについて紹介していこう。

続きを読む

ファイルやディレクトリをコピーするcpコマンドの使い方!【Linuxコマンド集】

Linuxを使っている限り必ず使うのがcpコマンドだ。ファイルやディレクトリをコピーするのに使う。

本日はLinuxのcpコマンドの使い方について詳しく解説した。

知っているオプションも多いだろうが、意外と知られていない便利なオプションについてもまとめている。

Linuxを使うエンジニアは参考にして頂ければと思う。

続きを読む

未経験者向け)ネットワークエンジニアとは? 仕事内容と将来性

ネットワークエンジニアとは

ネットワークエンジニアとは、どのような仕事をしているかご存じだろうか?

IT業界では日々新しい「○○エンジニア」が作られては消えているが、この「ネットワークエンジニア」は相当古くからある職種だ。

ネットワークは目に見えない。そのため、現代社会で重要な仕事ではあるのだが、実際どのようなことをしているか具体的に想像するのは難しいのではないだろうか?

しかし疑いなくネットワークエンジニアは今の情報社会においてなくてはならない存在だ。

このページではネットワークエンジニアの仕事内容とその将来性についてお伝えする。読み終わった頃には、ネットワークエンジニアについて大枠のイメージがついているはずだ。

将来どんなエンジニアになろうかまだ決めかねている人やIT業界を目指す人は、ぜひ参考にしてほしい。

続きを読む

【新旧対応】Linuxでの自動起動の設定方法を解説

linux 自動起動スクリプト

Linuxの起動時にコマンドやプログラムを自動で実行したい場合どうするか? Windowsだとスタートアップに入れて終了だが、Linuxでは方法が違う。

このページでは、Linuxの起動時にプログラムを自動実行させる方法についてお伝えする。細かいところまで解説を行ったので、自動起動に関してはここのページで必要知識を網羅できるだろう。

続きを読む

非公開になっているLPIC合格率を推測してみた

LPIC合格率

LPICはLinuxの人気資格だ。Linuxのスキル証明に受ける人が多い。

そんなLPICだが、はじめて受ける方が気になるのがLPICの合格率だろう。

残念ながら、LPICの合格率は公表されていない。そこで、このページではLPICの合格率を推測して、難易度を確かめてみた。LPICを受けようと思っている方は参考にしてほしい。

続きを読む

3分間で人に説明できるようになるUnixとLinuxの違い

UnixとLinuxの違い

UnixもLinuxもどちらもコンピュータの土台となっているOSだ。両方のイメージが重なっている人も多いのではないだろうか? 

どちらか一方使ったことがあればともかく、普通はどちらも「よくわからないけどエンジニアが使っていそうな何か」くらいのイメージになってしまっていると思う。

Linuxがこれだけ普及している現在、ITに関わっているのであればこれくらいの知識は持っておくと便利だろう。きっと知識として使える機会もある。

UnixとLinuxは親戚と言っていい。ただし、血のつながりはない。このページではUnixとLinuxの違いについて「初心者の方でもなんとなくわかるように細かいところは抜きにして」解説する。短い時間でわかるように、なるべく簡単に説明した。参考にしてほしい。

続きを読む

【目的別】初心者におすすめのLinuxディストリビューション7選

Linux初心者が、「概要はなんとなくわかった。では、早速Linuxを使ってみよう!」そう思ったとき、はじめに当たる難問は「どのディストリビューションを使えばいいのか?」だろう。

ディストリビューションとはLinuxの種類のことだ。Linuxはオープンソースということもあり、色々な種類のLinuxに分岐していった経緯がある。

このページでは初心者におすすめのLinuxディストリビューションを7つまとめている。2種類の目的に分けたので、どちらを優先させるかをまずは考えてほしい。

ディストリビューションを選ぶ際の参考にして頂ければ幸いだ。

続きを読む

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する