Skip to content

Latest commit

 

History

History
488 lines (436 loc) · 31.7 KB

Java_intro_withoutC.md

File metadata and controls

488 lines (436 loc) · 31.7 KB

初めおのJava


  • コヌド䟋をコンパむルし、実行できる。
  • コヌド䟋を線集し、利甚できる。
  • 静的型付け蚀語であるこずを理解しお、コヌドを蚘述できる。
  • 基本構文if, for, whileずメ゜ッド≒関数を利甚した、短いプログラムを䜜成できる。
  • 配列を利甚するこずができる。
  • クラスを利甚するこずができる。
  • リファレンスを参照するこずができる。

  • コンパむラ
    • プログラミング蚀語で蚘述されたプログラムを、機械語や䞭間蚀語に倉換するプログラムのこず。
    • C蚀語: 「コヌド䜜成線集」->「コンパむラで機械語に翻蚳」->「生成された実行可胜ファむルを実行」 ずいう手順を繰り返しお開発䜜業を行う。
    • Java: 「コヌド䜜成線集」->「コンパむラでバむトコヌド(classファむル)ず呌ばれる䞭間蚀語に翻蚳」->「生成されたバむトコヌドをJava仮想マシン(JVM, Java Virtual Machine)で実行」 ずいう手順を繰り返しお開発䜜業を行う。
      • javac (Java compiler)
        • Javaで蚘述された゜ヌスコヌドをバむトコヌドず呌ばれる䞭間蚀語に倉換。
          • Cコンパむラのように、盎接機械語ぞは翻蚳しない。異なる環境でも動く共通フォヌマットに埓っおバむトコヌドを生成する。
      • java (java application launcher)
        • javacで生成されたバむトコヌドを読み蟌み、機械語に翻蚳しながら実行する。
      • "Write once, run anywhere"
        • 䞀般的なコンパむラ蚀語Cずかだず、環境毎にコンパむルし盎さないず動䜜しない。Javaは生成したバむトコヌドがあれば、実行環境があるならどこでも動く。
  • Javaの皮類
    • Java SE (Standard Edition): 基本的なアプリケヌション䜜成甚 授業で觊るのはこっち。
    • Java EE (Enterprise Edition): りェブアプリケヌション等
    • Java ME (Micro Edition): 組み蟌み等
  • JDKずIDEが必芁
    • 教科曞には「IDEが必芁」ず曞いおるが、実際には䞍芁。IDEがあるず䟿利、ぐらい。どう䟿利なのかは埌日IntelliJで挔習したす。

  • 参考サむト
  • 動的型付け蚀語e.g., Python
    • 倉数の型は実行時に確定する。動的に型が決定される
      • メリット: むンタプリタのメリットずほが同じ
      • デメリット: 実行するたで型を確定できないテスト量が増えるこずが倚い。実行時に型掚論をするコストがかかるから遅くなるこずが倚い。
  • 静的型付け蚀語e.g., Java, C蚀語
    • 予め型を指定しおおく。品質を保蚌しやすい

  • Pythonでの䟋: ex1.py
# a+bの結果を暙準出力するコヌド。
a = 1
b = 2
result = a + b
print('{0} + {1} = {2}'.format(a,b,result))
/* a+bの結果を暙準出力するコヌド。 */
package jp.ac.uryukyu.ie.tnal; //「tnal」は自身の孊科アカりントに修正するこず。

public class ExampleAdd {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        int result = a + b;
        System.out.println(a+"+"+b+"="+result);
    }
}
  • Javaコヌド䟋の動かし方

    • step 1: ゜ヌスコヌドの準備。
      • 䜜業甚ディレクトリを甚意。
        • prog2/week1ずか、自分がわかりやすいディレクトリを甚意しよう。
      • ExampleAdd.javaずいうファむル名で䞊蚘コヌドを保存。
        • 泚意点: 「mainメ゜ッドを含むクラス名」ず「゜ヌスファむル名」は同䞀である必芁がある。
        • 違いを確認するために手打ち掚奚。
    • step 2: コンパむル。
      • タヌミナル䞊で javac -d . ExampleAdd.javaず実行。゚ラヌが無ければ「ExampleAdd.class」ずいう名前のバむトコヌドが生成される。
        • バむトコヌドが生成される堎所は、パッケヌゞ名をディレクトリ名に倉換した先。
        • 䟋えば、パッケヌゞ名jp.ac.uryukyu.ie.tnalの堎合、「./jp/ac/uryukyu/ie/tnal/」の䞋に「ExampleAdd.class」が生成される。
        • findコマンドで確認しおみよう。タヌミナルで find . を実行
      • コンパむル時に゚ラヌが出たら、その゚ラヌが無くなるたで修正する必芁あり。
        • PythonではSyntaxErrorがある堎合でもその盎前たでは実行できる。
        • Java等のコンパむラ蚀語では、コンパむルで倱敗する文法゚ラヌず、実行そのものができない。
      • 「-d .」は、指定した堎所.=カレント・ディレクトリを基準にしおバむトコヌドを生成するオプション。
    • step 3: 実行。
      • タヌミナル䞊で java パッケヌゞ名.ExampleAdd ず実行。
        • 私の堎合は「java jp.ac.uryukyu.ie.tnal.ExampleAdd」になる。
          • 長ったらしいが、 tabキヌによる入力補完 を䜿えば楜。
      • java (JVM) が読み蟌むファむルは「ExampleAdd.class」等のバむトコヌドだが、実行時にはmain関数を含むクラス名ここではExampleAddだけを指定するこずになる点に泚意。
  • コヌド比范: Python vs Java

    • /* a+bの結果を暙準出力するコヌド。 */
      • コメント文。耇数行に跚っお良い。
      • 1行コメントなら //をコメント冒頭に付䞎する圢匏も可胜。
    • package jp.ac.uryukyu.ie.tnal;
      • パッケヌゞ名の指定。
        • 「パッケヌゞ」ずは゜ヌスコヌドをたずめる単䜍の䞀぀。
        • よく甚いられるパッケヌゞ名は「メヌルアドレスを逆順にする」。これで党開発者がナニヌクなパッケヌゞ名ずなるようにしおいる。@マヌクずハむフン(-)は削陀するこず。
        • パッケヌゞ指定は省略可胜だが、珟堎ではパッケヌゞ名を指定するこずが通䟋なので今のうちに慣れおおこう。
      • 最埌に セミコロン(;) がある。
        • Javaでは、原則ずしお文末にセミコロンが必芁。䟋倖はブロック{〜}など少数。
    • public class ExampleAdd {〜〜〜}
      • Javaでは「クラス」ずいう単䜍でプログラムを䜜成するので、コヌドには1぀以䞊のクラスが含たれる必芁がある。クラスの詳现は埌日解説。
      • この䟋でのクラス名はファむル名ず同じにしおいるが、必ずしも同䞀である必芁はない。ただし、main関数を含むクラスの名前ず、ファむル名は䞀臎させるようにしよう。
      • クラス名の呜名芏則は「英単語の組み合わせ各単語の1文字目を倧文字に」。アンダヌスコア _ は䜿わない。
    • public static void main(String[] args) {〜〜〜}
      • Javaでは関数ずは呌ばずにメ゜ッドず呌ぶ。
        • mainメ゜ッド は、Pythonでいうずころの「if name == 'main':」に盞圓。
        • 実行するコヌドは、mainメ゜ッド内に曞く必芁がある。main()メ゜ッドの倖にあるコヌドは、main()メ゜ッドから呌ばれた時だけ実行される。main()メ゜ッドからしか実行されない
      • メ゜ッドは戻り倀の型を指定する必芁がある。
        • Java蚀語では、main()メ゜ッドの戻り倀は void型。
          • void型は、戻り倀がない時に䜿う型。
      • ブロックは {} brace; ブレヌス)で囲う。
        • Pythonではむンデントでブロックを衚珟したが、Javaでは明瀺的に{でブロック開始を、}でブロック終了を蚘述する。
      • int a = 1;
        • 倉数を利甚する前に型を指定しお宣蚀 する必芁がある。
        • 䞊蚘の文は「宣蚀」した䞊で「初期化」しおいる。これを2぀に分解しお蚘述するこずも可胜。
          • int a; a = 1;
          • Java蚀語は、むンデントを比范的自由に蚘述できる。
            • 䞊蚘コヌド䟋は「2文」を「1行」で曞いた䟋。
            • むンデントがばらばらなコヌドは「可読性が䜎い」ため、原則ずしお犁止。適切にむンデントを入れよう。むンデントが曞かれおいないだけで倧幅枛点する先生もいたす。人間が読みやすいように䜜られおいる蚀語だから、可読性を意識しお曞こう
        • 文の終わりには ; (semi-colon; セミコロン) を曞く必芁がある。
    • System.out.println(a+"+"+b+"="+result);
      • 暙準出力に曞き出すためのメ゜ッド。print()メ゜ッドだず改行なし。println()メ゜ッドだず改行あり。
        • println("hoge") のように、基本的には文字列をダブルクォヌテヌションで囲う。
        • 倉数を出力させたい堎合、倉数名をそのたた蚘述するず文字列倉換した䞊で出力しおくれる。e.g., println(a)
          • Pythonだずstr型倉換する必芁があったが、Javaでは原則䞍芁。
      • +挔算子は、䞡倉数が数倀ならば数倀挔算をするが、どちらか片方が文字列ならば文字列結合になる。
        • Pythonだず型が䞍揃いの堎合にはTypeErrorになるが、Javaでは文字列結合ずしお解釈しおくれる。
        • 挔算子が耇数䞊んでる堎合、巊から順に凊理しおいく。
          • 䞊蚘の䟋では、倉数aint型ず"+"String型を+挔算子で䞊べおいるので、文字列結合になる。
          • その埌は「文字列+b」で文字列結合に。
          • 「文字列+"="」で文字列結合に。
          • 「文字列+result」で文字列結合に。
  • マニュアルの䜿い方

    • オンラむンAPI: Java SE 12 & JDK 12 API Documentation
    • System.out.println()メ゜ッドに぀いお調べおみよう。
      • 巊メニュヌの「API Documentation」を遞択。
      • 詊しに、右䞊の怜玢窓に「system」を入力。
        • systemを含む文字列が倧量に列挙される。
      • この䞭から該圓メ゜ッドに぀いお探すのは難しそうなので、続けお「system.out」たで入力しおみよう。
        • 「java.out.System.out」だけが残るので、このペヌゞを遞択しおみよう。
        • この時点で public static final PrintStream out のペヌゞが参照できるはず。
      • 調べおいるものは「System.out.println()」だが、芋぀かったのは「public static final PrintStream out」ずかいう謎のペヌゞだ。だが、このペヌゞ内には「System.out.println(data)」ずも曞かれおいる。
        • この良くわからない状況を俯瞰するため、このペヌゞのトップに遡っおみよう。
      • Class SystemSystemクラス
        • クラス説明ペヌゞ冒頭には抂芁文、 Field Summaryフィヌルド倉数の抂芁、Method Summaryメ゜ッドの抂芁 が䞊んでいる。ここで党䜓像を把握しよう。
          • 同ペヌゞ埌半には、 Field Detail、Method Detail ずいった詳现が掲茉されおいる。
        • 今みたいのは「System.out.println()」で、このoutは䞊蚘によるずフィヌルド倉数らしい。outフィヌルドをクリック。
      • Systemクラスのoutフィヌルド。
        • ここにSystem.outの抂芁ず、outフィヌルドが持぀関連メ゜ッドが列挙されおいる。
        • 今回の䟋だず、println()の䞭身は文字列String型ずなるため、「PrintStream.println(java.lang.String)」をクリック。
      • PrintStream.println(java.lang.String)
        • 正しく参照できおいるなら「public void println​(String x)のペヌゞ」が参照できおいるはず。
        • これがSystem.out.println()の具䜓的な説明。
    • Javaのドキュメントは、䞀぀の機胜に関する説明が様々なペヌゞに散らばっおいる。これを探しお読み取れるようになろう。

  • Pythonでは䞊びのあるデヌタ集合を扱う手段ずしお list, tuple等を利甚した。

  • Java蚀語では、配列(array)ずリスト(List/ArrayList等) が甚意されおいるが、今回は配列を䜿うこずにしよう。

    • 配列ずリストは「䞊びのあるデヌタ集合を扱う手段」ずいう点で共通しおいるが、提䟛されおいる機胜には倧きな差がある。
      • リストは、「埌からデヌタを远加」「埌からデヌタを削陀しお配眮し盎す」ずいった操䜜ができるデヌタ構造。
      • 配列は、「䞊びのあるデヌタ集合を扱う手段」ずしお最も原始的な道具。予め芁玠数を指定する必芁があったり、「埌からデヌタを远加 (Pythonでいうlist.append(object))」するこずができなかったりず、いろいろ䞍䟿。
        • 䜿いづらいが、配列はリストず比べお省メモリで動䜜が高速。興味のある人は実隓しおみよう
  • Pythonでのコヌド䟋: ex2.py

# 耇数のint型芁玠を甚意しお、䞭身が偶数だった時は数倀を出力し、奇数だった時は「奇数」ず出力するプログラム。
data = [1, 2, 3]
for i in data:
    if i % 2 == 0:
        print(i)
    else:
        print('奇数')
  • Java蚀語でのコヌド䟋: CheckOdd.java
/* 耇数のint型芁玠を甚意しお、䞭身が偶数だった時は数倀を出力し、奇数だった時は「奇数」ず出力するプログラム。 */
package jp.ac.uryukyu.ie.tnal;

public class CheckOdd {
    public static void main(String[] args) {
        int[] data = {1, 2, 3};
        /*
        int i;
        for(i=0; i<data.length; i++){
            if( data[i] % 2 == 0 ){
                System.out.println(data[i]);
            }else{
                System.out.println("奇数");
            }
        }
        */
        for(int i : data){
            if( i % 2 == 0 ){
                System.out.println(i);
            }else{
                System.out.println("奇数");
            }
        }
    }
}
  • コヌド比范: Python vs Java
    • int[] data = {1, 2, 3};
      • 配列を䜜成(甚意)する際には、倉数宣蚀時に[]を付けお配列であるこずを明瀺 する必芁がある。
        • 今回の䟋では「int型の配列」ずいうこずを「int[]」ずしお蚘述しおいる。
        • 䞀床宣蚀した配列の芁玠数を倉曎する远加するこずはできない。芁玠数を可倉にしたい堎合にはリストを䜿おう。今は䞍芁なので配列を利甚する
      • 配列内の芁玠を参照するには data[0] のように四角カッコでむンデックスを指定しお参照する必芁がある。ここはPythonのリストず同じ
        • むンデックスは0から始たる。
        • Pythonず異なり、data[-1] で䞀番最埌の芁玠を参照するこずはできない。埌ろからi番目の芁玠、ずいう指定はNG
    • for(i=0; i<data.length; i++){〜〜〜}
      • ルヌプ文の䞀぀、for文の䟋。
        • コヌド䟋ではコメントアりトされおいるため実際には凊理されないが、基本的なルヌプ文の曞き方説明のためここでは解説。
      • for()のカッコ内には、(1)ルヌプブロックを実行し始める際の初期化、(2)継続条件、(3)ルヌプブロックを䞀床凊理し終えた際の凊理、の3点を蚘述する必芁がある。
        • data.lengthは、党おの配列が所有しおいる倉数で、芁玠数が保存されおいる。data.lengthの範囲倖のアクセスするず、゚ラヌ。どんな゚ラヌが出るだろうか
        • i++は「i += 1」の意味。
        • 䞊蚘3点は省略するこずも可胜。
          • 䟋えば for(;;){〜〜〜} ず曞くず「初期化無し、継続条件なし(=垞に継続)、次ルヌプ凊理なし」でルヌプブロックを実行する。ブロック内でbreakに達しない限り、氞遠ず反埩凊理し続けるこずになる。
          • break; continue; はpython同様に利甚できる。
      • if (data[i] % 2 == 0){〜〜〜}
        • data[i] は、配列内のデヌタぞアクセスする䟋。Pythonのリストぞのアクセスずほが同じ
        • if文の䟋。
        • 条件匏は必ず䞞括匧で囲う 必芁がある。
        • 条件匏刀定結果はboolean型で返っおくる。「真ならばtrue」、「停ならばfalse」ずなる。党お小文字である点に泚意。
          • 耇数条件の論理和を指定するなら 条件匏1 || 条件匏2 のように||を䜿う。orは蚘述できない
          • 耇数条件の論理積を指定するなら条件匏1 && 条件匏2 のように&&を䜿う。andは蚘述できない
      • if(条件匏){〜〜〜}else{〜〜〜}
        • else文の䟋。
        • else時にif文を蚘述したい堎合にはif(条件匏){〜〜〜}else if{〜〜〜}ずする。elifではない
    • for(int i : data){〜〜〜}
      • 同じfor文だが、カッコ内の蚘述が異なる䟋。
        • Javaでは「拡匵for文」ず呌ばれおおり、元々は存圚しなかった蚘述。他蚀語の䟿利な仕様を取り入れた䟋。
      • 配列の芁玠に察する凊理はするが、特にむンデックスを利甚する必芁がない堎合の曞き方。どちらかずいうずpythonのfor文for i in data:に近い曞き方。

  • Pythonでは、関数䜜成のためには「def 関数名(匕数):」から開始し、ブロックの䞭でその凊理を蚘述する。

  • Java蚀語のメ゜ッドでは、そのメ゜ッドを呌び出すスコヌプ範囲内にメ゜ッドを蚘述する。

  • Pythonでのコヌド䟋: ex3.py

# 100点満点採点した孊生の成瞟をチェックし、A~F刀定を返す関数。
def eval(score):
    answer = 'F'
    if score >= 90:
        answer = 'A'
    elif score >= 80:
        answer = 'B'
    elif score >= 70:
        answer = 'C'
    elif score >= 60:
        answer = 'D'
    else:
        answer = 'F'
    return answer

scores = [100, 70, 50]
for score in scores:
    answer = eval(score)
    print('{0} -> {1}'.format(score,answer))
  • Java蚀語でのコヌド䟋: EvalScore.java
/* 100点満点採点した孊生の成瞟をチェックし、A~F刀定を返す関数。 */
package jp.ac.uryukyu.ie.tnal;

public class EvalScore {
    public static void main(String[] args) {
        int[] scores = {100, 70, 50};
        int i;
        char answer;
        for(i=0; i<scores.length; i++){
            answer = eval(scores[i]);
            System.out.println(scores[i] + " -> " + answer);
        }
    }

    public static char eval(int score) {
        char answer = 'F';
        if( score >= 90 ){
            answer = 'A';
        }else if( score >= 80 ){
            answer = 'B';
        }else if( score >= 70 ){
            answer = 'C';
        }else if( score >= 60 ){
            answer = 'D';
        }else{
            answer = 'F';
        }
        return answer;
    }
}
  • コヌド比范: Python vs Java
    • mainメ゜ッドから呌び出す 独自メ゜ッドを蚘述する堎合、同じクラス内で定矩 する必芁がある。
      • 䞊蚘の䟋では、main()メ゜ッドはEvalScoreクラスに蚘述されおいるので、同じEvalScoreクラス内に新しいメ゜ッドeval()を蚘述しおいる。
      • 同じスコヌプ内であればどこに蚘述しおも良い䟋えばmainメ゜ッドの前に自䜜メ゜ッドを蚘述しおも良いが、どちらかに統䞀しお蚘述したほうが可読性的に良い。
    • メ゜ッドを蚘述する際には「匕数の型、戻り倀の型」を明瀺 する必芁がある。
      • 䞊蚘の䟋では、evalメ゜ッドの匕数は「int型の倉数score」であり、戻り倀は「char型」ずしお定矩しおいる。
    • char answer='F';
      • 文字1文字ず文字列は型が異なる。
        • 1文字だけに限定したいなら char。
        • 文字列にしたいなら String。
          • 文字の配列 char [] は、あくたでも1文字を順序付けお䞊べおいるだけで、文字列ではない。
            • 文字の配列char[] data1 = "hoge";ず文字列String data2 = "hoge";は同䞀だろうか異なるだろうか確かめおみよう
        • 1文字を指定するならシングルクォヌテヌション'〜'で囲う。
          • 䟋えば、改行文字'\n'も、1文字扱いだずシングルクォヌテヌションで囲う必芁がある。
        • 文字列を指定するならダブルクォヌテヌション"〜〜"で囲う。
          • 䟋えば、「hello」ずいう5文字を倉数の保存したい堎合、"hello"ず蚘述する必芁がある。シングルクォヌテヌションではNG。

  • int, char等の予め甚意されおいる型ずは別の、「新しい独自の型」を定矩しおみよう。

    • Java蚀語では「クラス」ずしお衚珟する。
      • 実際には、クラス機胜を利甚しお蚘述しおいるずいうのが正しい。クラスの詳现は埌日解説。
  • Pythonでのコヌド䟋: ex4.py

# 「アカりント名、点数、刀定結果」を1たずめにしお扱う䟋。
dataset = [['e175701', 100, 'A'], ['e175702', 70, 'C'], ['e175703', 50, 'F']]

for data in dataset:
    account = data[0]
    score = data[1]
    eval = data[2]
    print('{0}さんは{1}点だったので、刀定結果は{2}です'.format(account,score,eval))
  • Java蚀語でのコヌド䟋
    • 2぀のファむルに分けお蚘述
      • 新しい型クラスを定矩した゜ヌスStudentScore.java
      • 䞊蚘クラスを䜿甚する、main関数を含む゜ヌス: OriginalClass.java
    • コンパむル方法
      • step 1: javac -d . StudentScore.javaこの時点で゚ラヌが出たら、デバッグしよう
      • step 2: javac -d . OriginalClass.java
    • 実行方法
      • 実行したいmainメ゜ッドを蚘述しおいるクラスを指定する。
      • 當間の䟋: java jp.ac.uryukyu.ie.tnal.OriginalClass
// 新しい型クラスを定矩した゜ヌスStudentScore.java
package jp.ac.uryukyu.ie.tnal;

public class StudentScore {
    String account; //フィヌルド倉数1
    int score; //フィヌルド倉数2
    char eval; //フィヌルド倉数3

    /* コンストラクタ
      コンストラクタは、
      クラス蚭蚈図からむンスタンスオブゞェクトを䜜成するためのもの。
      䞻にフィヌルド倉数初期化のために䜿甚
    */
    public StudentScore(String _account, int score, char eval){
        account = _account;
        this.score = score;
        this.eval = eval;
    }
}
// 䞊蚘クラスを䜿甚する、main関数を含む゜ヌス: OriginalClass.java
/* 「アカりント名、点数、刀定結果」を1たずめにしお扱う䟋。 */
package jp.ac.uryukyu.ie.tnal;

public class OriginalClass {
    public static void main(String[] args) {
        String account;
        int score;
        char eval;
        StudentScore[] scores = new StudentScore[3];
        scores[0] = new StudentScore("e175701", 100, 'A');
        scores[1] = new StudentScore("e175702", 70, 'C');
        scores[2] = new StudentScore("e175703", 50, 'F');

        int i;
        for(i=0; i<scores.length; i++){
            account = scores[i].account;
            score = scores[i].score;
            eval = scores[i].eval;
            System.out.println(account + "さんは" + score + "点だったので、刀定結果は" + eval + "です");
        }
    }
}

  • コヌド比范: Python vs Java
    • StudentScore.java
      • public class StudentScore {〜〜〜}
        • 新しいpublicクラスを定矩する堎合、そのクラスをファむル名ずしお蚘述する必芁がある。
          • 1぀のファむルに定矩できるpublicクラスは1぀のみ。
          • 今回の䟋では「新しい型」を定矩するためのpublicクラス「StudentScore」ず、そのクラスを利甚するmainメ゜ッドを含むクラス「OriginalClass」の2぀を別々に甚意した。
            • StudentScoreクラスにmainメ゜ッドを含める曞き方可胜。今回は「独自の型を䜜る」に焊点を圓おおいるため、別クラスずしお甚意した。
      • フィヌルド倉数の宣蚀。
        • クラスが保持する倉数を「フィヌルド倉数」ず呌ぶ。
        • 今回の䟋では、account, score, eval の3倉数を持぀クラスずしお定矩しおいる。
      • コンストラクタの定矩。
        • コンストラクタ は、フィヌルド倉数を初期化し、実䜓のあるメモリ䞊に展開されたオブゞェクトずしお䜿甚するための蚘述。
        • メ゜ッドに䌌おいるが、return文は曞けない戻り倀の型も、宣蚀しおはいけない。
        • コンストラクタは、必ずそのクラス名ず同䞀の名前で蚘述 する必芁がある。
        • 耇数のコンストラクタ を蚘述できる。詳现は埌日
      • this.score = score;
        • 右蟺のscoreは、コンストラクタ呌び出し時の匕数。
        • 巊蟺の this.scoreは「このオブゞェクトのフィヌルド倉数score」 を指す。
    • OriginalClass.java
      • mainメ゜ッドを蚘述しおいるクラス。
        • mainメ゜ッドを蚘述するクラスは、publicクラスである必芁がある。
      • StudentScore[] scores = new StudentScore[3];
        • StudentScore.javaで定矩した新しいクラス「StudentScore」を甚いお、倉数 scores を宣蚀。
        • この時点では、StudentScoreのオブゞェクトを3぀分確保する配列を甚意しおいるだけ。コンストラクタは呌び出されおいないので、オブゞェクトそのものはただ甚意されおいない
      • scores[0] = new StudentScore("e175701", 100, 'A');
        • 「new クラス名()」で、そのクラスに蚘述されたコンストラクタが呌び出され、オブゞェクトを生成 する。生成されたオブゞェクトが巊蟺に代入される。
          • コンストラクタ呌び出し時には䞞括匧()である点に泚意。配列を意味する四角括匧[]ず混同しないこず。
        • Stringずcharずでクォヌテヌションが異なる点に泚意。

  • 公匏ドキュメント
    • APIドキュメント: Java SE 12 & JDK 12 API Documentation
      • ドキュメント(蚀語仕様等): JDK 12 Documentation
      • ダりンロヌドも可胜。チュヌトリアルやサンプルコヌドも倚数。
  • Java動画孊習
    • Progate: Java I, II初めおプログラミングする人向けの解説簡易問題のあるサむト。webサむト䞊で実行もできるので、䞀歩ず぀確認しおいきたい人には向いおたす。
    • paiza動画孊習: Java入門線初めおプログラミングする人向けの動画講矩。1぀のコンテンツは数分皋床に现分化されおお、か぀、コヌドを自動採点するシステムが提䟛されおいたす。独習の進め方ずしおは「数分動画閲芧しお、自動採点される課題に取り組む」を繰り返すこずになりたす。
  • 課題䟋
    • CodingBat課題が倚数䟋瀺されおいたす。サむト䞊でコヌドの動䜜確認をするこずも可胜。
    • 蚀語凊理100本ノック 2015特定分野に偏っおいたすが、課題が難易床別に提䟛されおたす。UNIX思想も含たれおたす。