Java初学者の素朴な疑問集
私はJavaを学習し始めて4か月くらい経ちますが、
学習を始めた頃に書き留めていた疑問メモを見返して
「初学者の時は誰しも、こういう疑問持つよな~」
と思ったので、初学者の皆さんの助けになればと思い共有します。
※本当に基礎の基礎を書いています。
System.out.print()とSystem.out.println()の違い
System.out.print()は通常の表示。コンソールに出力される。
System.out.println()は最後に改行する出力方法。
例えば
System.out.print("ミキ");
System.out.print("です");
で実行すると
表示は
ミキです
となる。
System.out.println("ミキ");
System.out.println("です");
にすると、
ミキ
です
になる。
stringとchar型の使い分け
Javaのデータ型【String】と【Char】とは?その違いは何?【39回】
が分かりやすい。
charはシングルクォートで囲う。
char a = 'A'
シングルクォートは1つの文字、ダブルクォートは文字列と判断されるため。
数値のデータ型(int,long)の使い分け方
ループ処理で8の20乗を表示する課題で、
コードは合っているのに表示が0になる!
→データ型の許容範囲の問題かも。
整数の場合、
[byte<short<int<long]
という風に、格納できる数値の大きさがそれぞれ異なるので注意が必要。
調べたら、どのくらいの長さの数値を格納できるかは出てきます。
intだと、8の20乗のようにintの容量を超える大きい数値は表示できない。
こういった場合はlongを使うと良い(整数の場合)。
→数値の大きさによってデータ型を使い分ける必要がある。
Javaクラスにメソッドを書いても動かない!?(Mainメソッドについて)
メソッドは、Mainメソッドが一番最初に処理される。
※Mainメソッドとは、
public static void main(String[] args){ }
のこと。
Mainメソッド以外の他のclassメソッドは、必要に応じて呼ばれたら動くので、そうでない限りいくら書いても動かない(基本的に)。
なのでメソッドをいっぱい作るときは、
- Mainメソッド作成
- MainメソッドにAメソッドを呼び出す記述
- AメソッドにBメソッドを呼び出す記述
...
といった風に書いていくと良い。
Mainメソッドについては、この記事が分かりやすい。
【Java入門】mainメソッドとその引数(args)、戻り値について解説
「インスタンス生成」って結局なんなの?
「インスタンス」とは、クラス内のオブジェクトのこと。
例えば、
//クラス名 作りたいインスタンス名 = new クラス名(); ←Userクラスで使いたいモノを入れるハコ
User mycards = new User();
と書く。
すると、メモリの中にUserクラスと同じ構造の領域が確保され、その領域をプログラム上でmycardsと呼ぶことになる。
要は、使いたいモノがあるクラスを呼び出して、使えるようにするための箱を作るということ。
mycardsはUserクラスの構造と同じなので、その中にUserクラス内のフィールド(cardsとか)領域を持つ。
また、Userクラス内のメソッドも使うことができる。
(フィールドやメソッドが「private」とかのアクセス制限されたものでない限り)
「void」って何?
英語で言う「void」は、「空の」「無効な」とかいう意味。
これと一緒で、Javaでのvoidは、そのメソッドに「戻り値が無いよ」って意味。
public static void testMethod(引数1,引数2){
System.out.print("hogehoge");
}
この時は、戻り値がいらない、ただの「testMethod」という処理なので戻り値はvoid(無効化)するよ!となっている。
この時、メソッド名にStringとかの型はつかない。
というか、voidは「値を返さないメソッドの型」。
例えばvoid
ではなくint
と書けば「intを返すメソッド」になる。
public static int add(int a, int b){
return a+b;
}
この時、addメソッドは戻り値を使いたいので、voidの代わりにintを使っている。
だから、この時はint型の"a+b"をreturnしてあげる必要がある。
戻り値を使うメリットは、このメソッドの処理結果を呼び出したところで使えること。
例えば、このaddメソッドを
int result = add(2,3);
System.out.print(result);
で「addメソッドおいでー!」と呼び出した場合、ここでそのまま処理結果を使えるので、out.print(a+b)とか書かなくても、表示は
5
となる。
「このメソッド式が長いけど、他でも使いたいんだよなー。でもout.printに長々書くのは微妙だし…」って時に戻り値を設定すると、短文で済む。
以上、初学者の時の疑問シリーズでした!
こういう初歩の初歩って、初歩すぎて誰もネットに書いてないんですよね。
それで1時間ハマるとかもったいないです。
GW中に基礎的な疑問は解消しましょう!
他にも、初歩すぎて分からないことがあればコメントください^^