Java Hello World はじめのプログラム 〜 Step1-1〜

イントロダクション

初めてJavaプログラミングを行う人向けに記載します。初めに開発環境の構築が必要(Windows版)です。やり方はリンク先にあります。ちなみにMac版はこちらです。

いろんな角度(言い方)で、同じことを解説しています。他にも以下のようなものがあります。

プログラミング言語とは

プログラミング言語というものは、沢山あります。流行だとPythonというプログラミング言語があります。
Java言語と同じようにパソコンで動かすことができます。
でわ、「プログラミング言語」はなぜたくさんあるのでしょうか? それは、プログラミング言語を作成する人の「思い」があって作成されます。例えば、先ほどのPythonであれば、何かしらの思いがあってRubyというプログラミング言語が作成されました。作成したのは日本人です。詳細はウィキを参照ください。

Java言語とは

このように、作成されたプログラミング言語の中にJava言語というものがあります。個人的に、多くの人が、これから学習していってほしいと思っているプログラミング言語です。

この言語は、C++を拡張した言語で。。。まぁJava言語の親に当たるプログラミング言語です。詳細はウィキを参照ください。

Javaが活躍している場所

Android関連

こちらがAndroidのサイトです。
そして、ウェアラブルアプリケーションも作成できます。
Android Wear

ゲームみたいだけど「Javaの指輪」

Javaアプリケーションが使える指輪、テクノロジー的にはJavaCardが使われているようです。

つまりは、スイカなどのフェリカで使用するICカードにプログラムを埋め込むことができます。なので、個人認証などが主な実装になります。

ウェブアプリケーション

各種ECサイト(大手量販店)で使用されています。Javaの特徴であるスピードと正確性が求められるような場所で使用されることが多いです。

AIに関して

最近いろいろな用途に実装されているAIですが、これもJavaで扱えます。Pythonが有名ですが、Javaでもできるんです。
TensorFlow(英語版です)

他にも、しゃべらせるようなこともできます。

ゲーム

みんな大好き「マインクラフト」がJavaでできています。使用している;フレームワークとしては「LWJGL」を使用しています。


Javaの特徴に関して

現在では、普通になっている「クロスプラットフォーム(どのOS(*1)でも動く)」ですが、当時(1990年代)は画期的なことでした。このクロスプラットフォームとウェブでの活躍があり、現在に至るというわけです。

*1 Windows, MacOS, iOS, Androidなどの基本ソフト(OSのこと)を示す

Javaの仕組み

Java言語は、JVM(Java Vertual Machine)というプログラムで動かすことができます。逆に言えばJVMがあれば動くのです。
実際には、JVMを動かすための環境としてJREというものがあり、また、開発環境としてJDKというものがあります。それぞれいろんなプログラムが入っている、フォルダをイメージしていただければ間違っていません。

本題

Java言語は、先ほどの「JVM」が動けばどこでも動くということを、うたい文句にしていました。
これを実現するために、いろんな工夫があったのですが、まとめると次のように作成されました。

  • Javaはクラスを単位として動く
  • Javaはメインメソッドが動く

このような形で、作成されました。具体的には次のような順序で動きます。

  1. JVM(Javaコマンド)がメインメソッドのあるクラスを見つける
  2. メインメソッドが動く

単純にこのように動くので、Javaのプログラムは必ずメインメソッドが動くようにできています。

クラスとメソッド

ここで「クラス」と「メソッド」というものに関して説明いたします。大まかに「こんな感じなんだ」というイメージができればよいです。
ちなみの、UMLという国際標準のクラスの絵の描き方があります。下のような感じです。

本当に、「クラス」には「属性(Javaの場合はフィールド変数)」と「メソッド」のみです。いろんな書籍、ウェブページでいろんなことを書いていますが単純にこれだけです。

この単純なものを何個も組み合わせると「複雑」になります。。。だから「シンプルな設計」が大切になってくるというわけです。
まずは、どんなものか眺める程度でOKです。

クラス

クラスというのは、プログラムを一つにまとめて記述したものです。具体的には次の要素を持ちます。

  • フィールド:クラスの中で保持することができる、変数(数値や文字列、オブジェクト)のこと
  • メソッド:クラスの中で動かすことができる、処理のこと

これらの、要素(フィールド、メソッド)は、外部からアクセスができる時と、できないときがあります。
それぞれ、アクセス修飾子というコードで制限することができます。
アクセス修飾子は「public, package, protected, private」があり、それぞれ制限する範囲が決まっています。

このクラスの中に、メソッドを持つことができるのですが、このメソッドのなかでも特別なメソッドがメインメソッドになります。具体的なコードは次のようなものです。

※「//」はコメントといいます。この部分はプログラムとしてJVMに認識されません。
同様に「/* /」の部分はJavaDocコメントといいます。クラスやメソッドの説明に使用します。

/** 初めのプログラム「ハローワールド」をいろんな形で実行 */
public class Lv1HelloWorld {
    /** メインメソッド */
    public static void main(String[] args) {
        // 通常のハローワールド
        System.out.println("Hello World");

        // 変数を使用したハローワールド
        String message = "Hello World_1";
        System.out.println(message);

        // メソッドを使用してハローワールド
        // ※メインメソッドから呼ぶためには「static」をつける必要がある
        hello();

        // クラスをインスタンス化して(使用して)ハローワールド
        Lv1HelloWorld main = new Lv1HelloWorld();
        main.say();

    }
    /** 普通のメソッド */
    public static void hello() {
        System.out.println("Hello World_2");
    }

    /** 普通のメソッド */
    public void say() {
        System.out.println("Hello World_3");
    }
}

ここで使用している「System.out.println()」を使ってゲームも作れます。
BGMが入っていますが、こんな感じで動かすことができます。ちなみに、Story.txtを編集することでオリジナルのストーリーを作成することができます。詳細は、Gitにアップしてあります。

プログラムを書いてみよう

そして、初めに作成するプログラムは「ハローワールド」です。

This post for beginer of java programing.First of all we have to setup IDE, like a Eclipse and IntelliJ IDEA(this link is post of setup for Mac)

<ハローワールド実行サンプル動画>

Hello World

「ハローワールド」はじめのプログラムです。
主にウェブアプリケーション(大規模なもの)の起動確認や、
データベースへの接続確認、新規で利用するライブラリ(Java3Dなど)の起動確認など

プログラムが走るかどうかの確認などに利用します。
これが、そのプログラムです。 → ここからダウンロード

サンプルのプロジェクトをGitからダウンロード(Pull)できます。やり方はこちらを参照ください。

Introduction

"Hello World" is first program for all programmers. Usually use in check for execute some libraly like web frame work or lwjgl any programs.

This code is one. download from here.

予備知識

Javaを起動するのにはメインメソッドが無いと動きません。なので、メインメソッドを作ります。が、その前に開発ツールを自分のパソコンにインストールしてください。

Java Install Eclipse〜開発ツールのインストール〜(Mac版)

Windows版のインストール手順

First of all

We will create a “main method”, because java program start at main method. before make your code, please install Eclipse IDE on your PC.

メインメソッドとは

プログラムを起動するときに一番初めに動くコードです。その書き方は下の様になります。

<Step1-1>

ハローワールドと呼ばれる、はじめのプログラムです。

赤い部分はどのコード処理を行うにも、この書き方になります。

緑色の部分は、メインメソッドの処理部分(処理の内容)なのでその時々によって変わります。今回はコンソール(標準出力と言います)に「Hello World」と出力(表示)します。
※このメソッド(コード)は丸暗記しても良いです。

(1) “main method” is a art of red character. And green is processing.

This program is called “Hello World”. This program is First program.

/** This is a "main method" */
public static void main(String[] args) {
    System.out.println("Hello World");
}

標準出力とはコンソール出力のことです。(初めの内はその認識でOK)

(2) 「JavaDoc」: クラスやメソッドの上に処理の概要を記載します。
下のサンプルのように書きます(Eclipseで記載した場合)

JavaDocは下の様なものです。この様なHTMLを出力してくれます。記載する内容に関してはプログラムコードの青い部分がJavaDocの部分です。

To write JavaDoc as bellow.

(3) (1)のメソッド以外は全て普通のメソッドです。メインメソッドと分けるために「普通のメソッド」と記載しました。

書き方のルールは以下の通り

修飾子 返却型 メソッド名 {
処理
}

「修飾子」: 「public, private, protected, 修飾子なし」と4種類あります。

// patern1
public void XXX {
   // どこからでも(ビルドパスが繋がっていれば)参照可能
}
proteted void XXX {
  // 継承関係のあるクラスまで参照可能
}
void XXX {
  // パッケージ内まで参照可能
}

「返却型」: クラス、データ型の型です。以下のように分類されます。

public void XXX {
  // 返却なし
}
public String XXX {
  // String型の返却
}

<データ型>
・プリミティブ型 → int, long, double, charなどあります。
・クラス型(参照型)→ String, Integer, Long, Double, Charactor など
※詳細は後ほどやります。

<クラスの書き方>

修飾子 class クラス名 {
フィールド;(メンバ変数)
メソッド;    (メンバ関数)
}
具体的に。。。

public class FirstProgram {
    // 使わないけどフィールド変数(Field)
    private String field; // 参照型
    private int age; // プリミティブ型
    /** コンストラクタ(後でやります) */
    public FirstProgram() {
        field = "初めてのプログラム";
        age = 5;
    }
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

JavaDoc: クラスやメソッド、フィールドの説明を記載します。EclipseなどのIDEやコマンドプロンプトから「javadoc」コマンドでJavaDocを生成できます。

コメント: コードの説明など記載します。「TODO」「FIXME」などの単語も使用します。

 /** 
  * サンプル。
  * 青色の部分がJavaDocです、クラスの説明を記載します。
  */
 public class FirstClass {
    /** フィールド */
    private String field;
    /** 
     * メソッド(メンバ関数)。
     * @param param String型の引数
     * @see https://docs.oracle.com/javase/jp/8/docs/technotes/tools/windows/javadoc.html
     */
    public void methodName(String param) {
       System.out.println("Hello World");
    }
    /**
     * メインメソッド(クラス内にあるけどメンバ関数ではない)
     * @param args プログラム引数
     */
    public static void main(String[] args) {
        // このクラスをインスタンス化する(コメント文)
        FirstClass cls = new FirstClass();
        /*
         * ここもコメントです。
         * このクラスの「methodName」を呼び出している。
         */
        cls.methodName("引数の意味がない?");
    }
 }

<問題1>
・上記のサンプルを参考にして、コンソールに「タイガーマスク」と出力する
プログラムを作成してください。
<問題2>
・プログラム引数を表示するプログラムを作成してください。
※メインメソッドの引数がそのままプログラム引数になっております。そして、Eclipseの場合は起動するJavaファイルを右クリック⇒実行の構成をクリックすると下のような画面が見れます。

※ Eclipseの場合

<問題3>
文字列型の変数を2つ初期化して、それぞれ「甘い」と「マスク」を代入して下さい。そして、その二つの文字列を連結して表示するプログラムを作成してください。
<<ヒント>>

// 初期化
String aaa = "初期化で代入する文字列";

メインメソッドを作ってみた

Eclipse(開発ツール[IDE])を使用してクラスを作成するところから動画にしてみました。余計な音が入っています(笑)

デバック実行で解説

エスケープシーケンス

System.out.println("XXXX");と書くと文字列が表示できますが、「"」を表示させるにはどうしたら良いか?これは「エスケープシーケンス」と呼ばれる文字コードを使用します。「\」とか「¥」がそうです。
ダブルクォーテーションなどはメタ文字と呼ばれ正規表現や文字列と数値の区別などに使用されます。

具体的には。。。
①「"」をエスケープする

String aaa = "ダブルクォーテーション\"です。";

Eclipse(上で使用している開発ツール)のインストール方法

次回は、変数の扱い方を行います。

関連ページ

関連ページ一覧

Java Basic

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 9〜Training of for statement〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜
  17. Java Basic JUnit 〜テストスイートの作り方〜


投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

「Java Hello World はじめのプログラム 〜 Step1-1〜」への1件のフィードバック

  1. ピンバック: Google

コメントを残す