Java 学習の前に
Javaを勉強するにあたってこのサイトが一番分かりやすく説明している自信があります。
それはなぜかというと、私がJavaを習得した際の過程すべてを説明していること。
また、その際に分からなかった疑問に思ったことをすべてまとめていること。
何も知らない全くの無知の方にも分かりやすいように細かく、説明しているからです。
Java とは
JavaとJavaScriptって聞いてたことはありますか?
名前が似ているので、略称かな?と思う方もいるかもしれませんが、全くの別物です。
ちなみにJavaScriptの略称はJsと書きます。(J女子S小学生ではありませんよ)
Javaはプログラミング言語の1種で習得したい言語ランキング1位です。
これは多くの現場で使われている事や、汎用性が高いことや、OSに依存しないことが理由です。
OSで依存しないというのはMacでもWindowsでも動作環境が依存しないということです。
Javaで何が作れるか
Javaでは、システムを構築することもできますし、ゲームアプリを作成することもできます。
マインクラフトというゲームはご存じですか?あれもJavaを使用して作られています。
メリット
処理速度が速い
プラットフォームに依存しない
デメリット
環境構築が大変
難易度が高い(しかし、マスターすればほかの言語の習得もすんなり入るので、学んでおいて損はないでしょう)
開発環境
JDKとJRKがあります。
JDKはJava Development Kitの略でJavaをプログラミングするためのソフトウェアです。
簡単に言うと絵を描くにはスケッチブックがいりますね。
JDKはスケッチブックです。
JRKは、Javaで作られたソフトを実行する場所で、基本的にもともとパソコンの中に入っています。
例えば、ゲームを作った場合、途中段階でテストしないとどんな感じに出来上がっているかわからないですよね。
それをテストしてみる場所だと認識してください。
では、インストールしてみましょう。
Javaの書き方
早速書き方と解説をしていきます。
Public class Test{}
と、まず書きます、これは{}内のすべてをまとめてTestという名前を付けました。ということです。
ここでは名前のことをclassと呼びます。
そのclassの名前はTestです。という表記です。
Public class Test{
public static void main(string[]args){}
}
と書きましょう。
このpublic static void main(String[]args){}というのをメインメソッドと呼びます。
今は一つ一つの意味は割愛しますが、一つだけ大事なことを!
Public static void main(String[] args){}の{}内の部分にプログラミングを記していきます。
では例として、Sytem.Out.Print(“hello world”)と書きます。
全文は
public class test{
public static void main (string[]args){
System.Out.Print("Hello World")
}
}
と書いたら、コマンドプロンプトに「hello world」
と書かれます。
public class クラス名{
public static void main(String[] args){
ここにプログラミングしていく
}
}
変数とは
変数とはあだ名みたいなものです。
例えば、山田君のあだ名を山ちゃんとします。「山ちゃん!」と呼んだら、山田君が来ますね。
このような本来の名前ではないが、そのものを指す新たな名称を総じて変数といいます。
この変数は、ただのあだ名ではなく、山ちゃん=山田君だったのを
山ちゃん=小山君に変えることができます。
変更後は「山ちゃん!」と呼んだら、山田君ではなく、小山君が来ます。
こういう便利性があります。
今何が便利かわからなくても後々わかってくるので安心してください。
変数int
変数にはいくつか種類があり、一番オーソドックスなintで説明します。
使い方などは変数(intがdoubleとか)に代わるだけで、変わりません。
int age;
と書くことで、変数ageの出来上がりです。
これはただの変数の箱なので、中身はまだありません。
この先に
age=20;
と書くことで、 ageという変数に20を当てはめることができました。
例:あだ名では山田君という正式な名前に山ちゃんというあだ名をつけますが、変数は逆で、山ちゃんというあだ名に山田君を任命します。
Int 山ちゃん; で、山ちゃんというあだ名(変数)ができました。
山ちゃん=山田君; これで山田君に任命しました・。 山ちゃん=小山君; と書くことで、あだ名の移行が完了です。
※上記はあくまで、例なので、プログラミングで日本語は使用できませんので、ご注意ください。(“”内は除く)
int age;
age=20;
でageは20と定義できました。
この変数ageを呼び出すことで20が出てくるようになります。
public class Test2{
public static void main (string[] args){
int age=20;
System.Out.Print(age);
}
}
この結果は20と表示されます。
int age=20;とまとめることも可能です。
(age)の部分は“”をなしでOKです。
もし“age”で出力すると結果はageと、そのまま文字列として出力してしまいます。
その文字単体を指定したい場合は“”で挟み、定義したもの(変数など)を指す場合は“”はなしです。
演算子
演算子とはage=20;の場合=を演算子と呼びます。ちなみにageや20の文字をオペランドと呼びます。
プログラムできたらいいので、特に覚える必要はないかと思いますが、一応頭の片隅に・・・
この演算子には+や–なども存在します。
これらはあなたが小学校を卒業していたらわかるので、割愛しますが、
int age=20;
age=20+1;
とか
int old=20;
int old=20*2;
int old=20;
int old=20*2;
とかもできます;
*は×(かける)の意味です。
うすうす気づいてるかも知れませんがageは年齢として使っています。
あなたは20歳です。
お兄さんは4歳上です。の場合、
int you=20;
int bro=24;
よりも
int you=20;
int bro=you+1;
の方が、1年後・・・となったときに
you=20+1;もしくはyou=21;
と書くだけで、broの結果はいずれも25となるので、書き換えが少なく便利ですね。
極端に兄弟が100人いた場合、1年後、100人分の年齢を書き換えなくても、基準の一人を書き換えることで、済むので、楽です!
If文
if文は、これからプログラムしていくにあたって、もしAなら結果を〇もしBなら結果を×のように、「もし、〇〇なら・・・」の定義をしていくことです。
例題
4時-12時の間は「おはよう」12時から16時までは「こんいちは」16時から4時までは「こんばんは」というプログラムを作るとします。
今は、この時間の取得は置いといて、手動で時間を設定します。
public class Greeting{
public static void main(string[]args){
int hour=8;
if((hour=4)&&(hour=12)){
System.Out.Println("おはよう");
}else if((hour>=12)&&(hour<16){
System.Out.Println(“こんにちは”);
}else{
System.Out.Println(“こんばんは“);
}
これがプログラムです。
ちょっと一気に詰めてしまったので、分けて解説していきます。
では、メインメソッドの中身を見ていきます。
hour=8;
これは今が8時の場合ということです。
本来なら、現在時刻の取得から入りますが、今は割愛しますので、手動で8と変数に入れました。
次に
if((hour>=4)&&(hour<12)){
System.Out.Println(“おはよう”)
}
ですね。
もしも、変数hourが4以上(4も含む)かつ12以下(12は含まない)場合は、おはようを出力という意味です。
&&はかつ、でしたね。
(hour>=4)と(hour<12)の両方の場合を条件としているのでまた、その外に()をつけましょう。こうです。
((hour>=4)&&(hour<12))
その次に、続けてelse if()と書き出します。
else ifは1つ目のifに対し、また別のifの場合に使います。
ifの合計(分岐数)が3以上の場合は、最初と最後以外に使いましょう。(最後も使ってOK)
()内は同様です。
そして、最後がelseです。日本語でその他です。
要するにifで「もし〇〇の場合・・・」と続け「それ以外の場合」って感じです。
elseを使ってもいいですし、
else if((hour>=16)||(hour<3)){}
と書いていきましょう。
あれ、else if((hour>=16)&&(hour>3))じゃないの?と思いました?
確かに時間なので24時は0時ですが、これはあくまで時計の話で、今プログラムしているパソコンはただただ数字としか見ておらず、「時間の概念がありません」ので、
hourの値が24以降も28も63もパソコンの中ではあり得ます。なので、「16以上もしくは3以下」と記す必要があります。
変数string
変数には種類があると上記で話しましたね。
変数Stringは文字列を変数とすることができます。
intでは数字のみだったので
int = 5;
でOKでしたが、
stringでは
string=”おはよう”;
のように“”を必要とします。
文字列には“”が必要と覚えておきましょう。
では、このstringを使って時間別の挨拶を綺麗にしましょう。
public class Greeting{
public static void main(string[]args){
int hour=8;
if((hour>=4)&&(hour<12)){
System.Out.Plintln(“おはよう”)
}else if((hour>=12)&&(hour<16){
System.Out.Println(“こんにちは”)
}else{
System.Out.Println(“こんばんは“)
}
}
}
前回の完成はこれでしたね。
これでもOKなんですが、System.Out.Plintlnって何回も打つの面倒ですよね。
なら、メインメソッド内をこう変えましょう。
public class Greeting{
public static void main(string[]args){
int hour=8;
string aisatu=””;
if((hour>=4)&&(hour<12)){
aisatu=“おはよう”
}else if((hour>=12)&&(hour<16){
aisatu=“こんにちは”
}else{
aisatu=“こんばんは“
}
System.Out.Println(aisatu);
}
string aisatu=””;
で、あいさつという変数の箱を用意しました。
“”は中身は何も入っていない事になります。
何も入れないならstring aisatu;だけでいいじゃんって思うかもしれませんが、
だめです。
そしてこの値を、条件分岐によって、変数の値を変えるようにしています。
配列
配列は変数の箱を並べて繋げるイメージです。
例えば3人のテストの結果をまとめる場合、
public class Test{
public static void main(String[]args){
int TestA=20;
int TestB=40;
int TestC=30
}
}
と何回も定義するのは面倒です。
同じテストの成績ということで、まとまりが属しているのでまとめましょう。
int[] Tests=new int [3];
これでまず左側がTestsという名の箱をいくつか用意します。という意味で、
右側が新しいintの箱3つという意味です。
new int 新しい箱!と定義していることで、中身は空にしてくれているので“”は不要です。
“”がないと中身が空ではなく、無という感じ、段ボールでいうと底がまだ作られていない状態。“”を付け加えることで、何かを入れる準備。つまり、底を用意してくれています。
それで、メインメソッドの中身を
int[] Tests=new int[3];
Tests[0]=20;
Test[1]=40;
Test[2]=30;
と、書くことで3つ作ることができます。
※最初の3つは3つであっていますが、1番目というのは2番目で0が1番目です。
つまり、0.1.2と3つ作成されたことになります。
実はまだ、省略することができまして、
メインメソッドの中身を
int Tests[]=new int[]{20,40,30};
とまとめることができます。
For文
For文とは、繰り返しの処理です。
同じ処理を複数回繰り返すときに便利です。
構造は以下です。
for(初期値,継続条件,進行){}です。
3を三乗するプログラムを作ります。
int num=1;
num=num*3;
num=num*3;
num=num*3;
num=num*3;
・・・・・って続いていきます。
num=num*3について
intで定義したnumは1です。
次に、num=num*3ですが、
最初のnumはこれから値を入れるnumなので、値は不明です。
num*3のnumは今現在のnum値です。
なので先ほど定義したnum=1;の1です。
1*3なので1回目は3
同様に2回目はnumの3×数字で書いている3で答えは9です。
では、3の三乗を書いていきます。
for(int i=0;i<3;i++){
num=num*3;
}
です。では解説します。
iは「〇回目の処理」を数得るために使用します。
別にiである必要はないですが、iが多いです。
まずは、1回目の処理なのでi=0;0から始まることを書きます。
次に、i<3;これを満たしているなら処理します。
3乗したいので値は3ですが、0から始めるので3は含まないため、=はいりません。
(ややこしいですね)
i++;これは処理を繰り返すたびにiが増えていく記述です。
i=i+1と全く同じです。
三乗するためには、1乗目、2乗目、3乗目とカウントする必要があります。
これをi++でカウントします。
For文の配列
For文も配列を使ってきれいにまとめることができます。
では、行きましょう。
public class Tests{
public class void main(string[]args){
String[] people = new string[]{"A";"B";"C";"D";}
int scores[] = new scores[]{20;30;40;25}
for(i=0; i=people.length; i++){
Sytem.out.println(string[i]+"は"+int[i]+"点です")
}
}
}
解説します。
新しく出てきたのが、people.lengthですね。
このpeopleの部分は変数名です。
これに.lengthを足すことで、格納した変数の数を自動でカウントしてくれます。
いまは4ですが、100,200と長くなった際にカウントする手間が省けます。