Java Basic Level 4〜Boolean〜

イントロダクション

再度、復習の意味で以前記載したものをやります。
今回はBooleanの使い方をやります。前回までは、Javaを初めて触る人向けに記載しました。今回からは、少し触ったことがある人向けに記載します。
ちなみに、前回記載したものは、こちら

解説

Introduction

I will write again what how to use value of boolean. And Tihs time, Write about Boolean.

ロードマップ

  1. Booleanの扱い方 今回
  2. If文の使い方
  3. If文の使い方〜応用編〜
  4. ループ処理〜For文〜
  5. ループ処理〜For文の応用〜
  6. ループ処理〜While文〜
  7. ループ処理〜While文の応用〜
  8. ループ処理〜Do While文〜
  9. ループ処理〜Do While文の応用〜
  10. 演算子の整理
  11. 演算子の応用
  12. まとめ

Road Map

  1. How to use Boolean This time
  2. How to use if statement
  3. Training of  if statement
  4. How to use loop statement 〜While〜
  5. Training of Loop〜While〜
  6. How to use loop statement 〜While〜
  7. Training of Loop〜While〜
  8. How to use loop statement 〜Do While〜
  9. Training of Loop〜Do While〜
  10. Summary of operator
  11. Training of operator
  12. Summary

Booleanの使い方

Booleanとは「True(真)」と「False(偽)」の値を入れるためのデータ型です。

boolean hantei = 1 == 1; // True
hantei = 1== 2 // False
String moji = "abc";
hantei = "abc".equals(moji); // True
hantei = "abb".equals(moji); // False

簡単な使い方は上記のような使い方です。実際には「if」文と合わせて以下のように記述します。

public static void main(String[] args) {
   if ("test".equals(args[0]) {
      System.out.println("プログラム引数は" + args[0] + "です");
   }
}

上記はプログラム引数(プログラムを起動するときに渡す引数です)

プログラムを実行するときはコマンドプロンプト下のようなコマンドを叩きます。

コマンドプロンプトの扱い方に関しては下の動画を参照ください。

まずはコンパイル

javac Hello.java

そして実行

java Hello

MACでの実行になりますが、Windowsでも同じコマンドです。

Windowsでの実行はこちらです。

How to use Boolean

Boolean is Data type of variable whitch you can set true and false. This is sample of use Boolean.

boolean hantei = 1 == 1; // True
hantei = 1== 2 // False
String moji = "abc";
hantei = "abc".equals(moji); // True
hantei = "abb".equals(moji); // False

This is a example of simple case. actually we ofen use in if statement

public static void main(String[] args) {
   if ("test".equals(args[0]) {
      System.out.println("Program argument is " + args[0]);
   }
}

That program print to console a program argument.

今回は問題がありません。次回からは問題を作ります。
Javaを楽しんでください!

There is no questions. Next time, I will make questions.
Have a gooday and enjoy java. see you next time!


IF文とBoolean

IF文だけではありませんが、論理演算という処理があります。これは返却値にBooleanを返す処理ですが、基本的に「条件分岐」を行う処理が多いです。よく見かけるコードでは下のようなものがあります。

String str = "";
if (isEmpty(str)) {
  System.out.println("空です。");
} else {
  System.out.println("「" + str + "」です。");
}

isEmpty()は、引数の文字列が空文字、もしくはNULLの時にTRUEを返すメソッドです。具体的には下のようなコードです。

public boolean isEmpty(String str) {
   boolean isEmpty = false;
   isEmpty = str == null || "".equals(str);
   return isEmpty;
}

つまり、メソッドの返り値をIF文のかっこの中に書いた場合は、メソッドの返り値でTRUE、FALSEが渡されるのでIF文の中に処理が入るかどうか決まる。ということです。

上のコードを分解する

上のコードを分解します。つまり、一つずつ変数に結果を取り出して、デバック実行したときに値を確認できる形のコードに直します。

String str = "";
boolean isEmpty = isEmpty(str);
if (isEmpty) {
  System.out.println("空です。");
} else {
  System.out.println("「" + str + "」です。");
}

大したことをしていませんが、こんな感じです。メソッドを使用しない場合は、下のように書いてもよいです。
「isEmpty()」を「str == null || "".equals(str)」に書き換えた形です。色々な場所で使えそうな処理はメソッドという形で作っておけば
何度も使うことができます。1回しか使わないのであれば「str == null || "".equals(str)」を書いてもよいと思いますが、「isEmpty()」は汎用性のある処理なので、メソッドで使った方が良いと思います。

String str = "";
if (str == null || "".equals(str)) {
  System.out.println("空です。");
} else {
  System.out.println("「" + str + "」です。");
}


今回の記事には全く関係ありませんが、Javaでこんなアプリも作れます。そして余計な音が入っています。JavaFX + Gluon

でわでわ。。。

Java Basic Level3 〜About String class〜

イントロダクション

私事ですが、以前に書いた記事を再度書き直しわかりやすくしようと思いました。一応、国際化対応しておきます。※英語圏の人は何とか読んでください

はじめの記事は、Javaを始めるのに一番はじめのプログラムを作成するところからはじめます。色々と思うところはあると思いますが、以下の点に留意してもらって、とにかくはじめてみるのが良いと思います。

とりあえず、実行と解説をして見ました。

  1. 「Javaとはなんぞや?」というのはやってから理解すれば良いと思います。
  2. 慌てずにのんびりやりましょう(笑)
  3. 「知識」と「技術」の両方を使用するので「頭で理解」と「手を動かす」の両方が必要です。
  4. インプット(座学)とアウトプット(プログラムの実行・作成)を両方やるようにしましょう。

「Javaとはなんぞや?」の答えに関しては、作って、動かして、オブジェクト指向がわかった頃に答えは出ると思います。

Introduction

As for me, I will rewrite my blog for make understand easy. i will internationally.

The first article begins by creating the first program to start Java. Let’s have fun!

I think that answers will come out when making, executing, and knowing object orientation.

ロードマップ

  1. プログラムを初めて作る人向けです。コンソール画面に「Hello World」と表示するプログラムを作成します。→Mainメソッドについて理解する

  2. 計算するプログラムを作成します。計算するためには「変数」を使用する必要があります。→変数と演算子について理解する

  3. 演算子「+」「-」「++」などを使う方法、考え方を理解

  4. 文字を操作するプログラムを作成します。文字を切ったり、つなげたりして文を編集するプログラムを作成します。→文字列クラス「String」の理解【今回】

  5. Boolean型の使い方やプログラム引数など、条件分岐やループ文などで使用します。

  6. IF文の書き方と使いかた

Road Map

  1. For those who create programs for the first time. create program for display “Hello World” on the console screan.→ To understand the main method
  2. Create program for calcurate. In order to calcurate it is nessesary to use “valiable”.→To understand “valiable” and “operator”
  3. How to use operators in java code.
  4.  Create program for manipurate characters. to edit sentencces by cutting, connecting characters.→To understand String classthis time
  5. How to use Boolean and program argument
  6. How to use if statement

文字列操作(Stringクラス)

Javaで文字を扱うときに使用するデータ型(変数の型)
として「char」と「String」があります。
charはプリミティブ型というカテゴリのデータ型で、1文字のみが変数にセットできます。「==」で比較します。
Stringは参照型(クラス)というカテゴリのデータ型で、複数の文字を変数にセットできます(なので文字列)。比較メソッド(.equals())を使用します。

⑴初期化するときは下のようにやります。

// 文字(1文字だけ)
char a = ‘a’; // シングルクォーテーション
String a = “a”; // ダブルクォーテーション

⑵比較するときは、charは「==」を使用します。
Stringはメソッドを使用します。

String a = “a”;
a.equals(“a”); // trueが出力されます。

※通常、変数のにNullが入っている場合にNullPointerExceptionで落ちてしまうので「"a".equals(a)」と記述します。

兎にも角にも、コードをみてみいないと
なんとも言えないのでこちらから
ダウンロードしてください。

String manipulation(About String Class)

if you would like to manipulate String or charactor, you can use String class and char valiable(Charactor class)

⑴ when initializing, you can wite like this

char a = ‘a’; // single quote
String a = “a”; // double quote 

⑵ how to campare charctor and String

"char" is primitive data. and you can compare using "=="

<Ex1>
char a = 'a'; iif (a == 'a') { ...};

"String" is class. and you can compare using ".equals()"

<Ex2>
String a = "a"; if (a.equals("a")) { ...};
※ usually, we write 「"a".equals(a)」.cause if a valiable is Null then get "NullPointer Exception".

<問題>

・プログラム引数に「abc」「def」を渡してその引数を
以下のようにコンソールに出力してください

<Question>
・using program argument, and output 「abc」「def」to console.

——————————————————
①引数1: abc
②引数2: def
——————————————————

・上記の表示を行なった後にchar型の値「G」と「E」を
①と②の最後の部分に追加して表示してください。

・after output console. add "G" and "E" on ①, ②

※String型の変数の後にchar型を連結できればOKです。
Eclipseの画面では下のような画面でプログラム引数を追加します。

Stringクラスのメソッド使用例

public void testString() {
    // 文字列を比較した場合
    System.out.println("*** String#equals() Sample1 ****");
    if ("test".equals("tezt")) {
        System.out.println("\"test\"と\"tezt\"は等しいです。");
    } else if ("test".equals("tezt") == false) {
        System.out.println("\"test\"と\"tezt\"は等しくありません。");
    } else {
        // 実際は例外しか返ってこないので意味のないコード
        // 想定外のケースも考慮に入れる
        System.out.println("trueもfalseも帰ってこなかった場合。");
    }
    System.out.println("*** String#equals() Sample2 ****");
    // 変数に入れた文字列を比較した場合
    String str = "test";
    String str2 = "tezt";
    if (str.equals(str2)) {
        System.out.println("\"test\"と\"tezt\"は等しいです。");
    } else {
        System.out.println("\"test\"と\"tezt\"は等しくありません。");
    }

    System.out.println("*** String#equalsIgnoreCase() Sample1 ****");
    if ("test".equalsIgnoreCase("tezt")) {
        System.out.println("\"test\"と\"tezt\"は等しいです。");
    } else if ("test".equalsIgnoreCase("Test") == false) {
        System.out.println("\"test\"と\"Test\"は等しくありません。");
    } else if ("test".equalsIgnoreCase("Test")) {
        System.out.println("\"test\"と\"Test\"は等しいです。");
    } else {
        // 実際は例外しか返ってこないので意味のないコード
        // 想定外のケースも考慮に入れる
        System.out.println("trueもfalseも帰ってこなかった場合。");
    }

    System.out.println("*** String#isEmpty() Sample1 ****");
    if ("".isEmpty()) {
        System.out.println("文字列は空です。");
    }
    String tmp = null;

    System.out.println("*** String#isEmpty() Sample2 ****");
    try {
        if (tmp.isEmpty()) {
            System.out.println("文字列はNULLです。");
        }
    } catch (NullPointerException e) {
        System.out.println("実行するとNullPoineterExceptionで落ちる。");
    }
}

Stringクラスのメソッド使用例2

String str = "0123456789ABCABC";
System.out.println("*** String#contains() Sample1 ****");
if (str.contains("012")) {
    System.out.println(str + "は「012」を含んでいます。");
}
System.out.println("*** String#contains() Sample1 ****");
if (str.contains("014")) {
    System.out.println(str + "は「014」を含んでいます。");
} else {
    System.out.println(str + "は「014」を含んでいません。");
}

System.out.println("*** String#endsWith() Sample1 ****");
if (str.endsWith("ABC")) {
    System.out.println(str + "は「ABC」を末尾にあります。");
}

System.out.println("*** String#endsWith() Sample1 ****");
System.out.println(str + "は「ABC」の文字列が" + str.indexOf("ABC") + "番目に出現します。");
System.out.println(str + "は「ABC」の文字列が最後に出現するのは" + str.lastIndexOf("ABC") + "番目に出現します。");

整形する

String#format(書式文字列)のような形で記述します。
書式文字列にはただいま%d時です。というような書き方をして「%d」に値をセットする形です。

String.format("ただいま%d時です。", 12); // ただいま12時です

サンプルプログラム

    @Test
    public void testFormat() {
        String str = "これは%d円です";
        System.out.println(String.format(str, 12));

        Date date = new Date();
        String str1 = "いま%tk時です";
        System.out.println(String.format(str1, date));

    }

でわでわ。。。
see you next time. have a good day!

関連リンク一覧

Java Basic Level2 〜Arithmetic Calculate 四則計算と変数の使い方〜

イントロダクション

私事ですが、以前に書いた記事を再度書き直しわかりやすくしようと思います。


はじめの記事は、Javaを始めるのに一番はじめのプログラムを作成するところからはじめます。「Javaとはなんぞや?」というのはやってから理解すれば良いと思います。まぁ慌てずにのんびりやりましょう(笑)
<デバックしながら解説>

→作って、動かして、オブジェクト指向がわかった頃に答えは出ると思います。

Introduction

As for me, I will rewrite my blog for make understand easy. i will internationally.

The first article begins by creating the first program to start Java. Let’s have fun!

I think that answers will come out when making, executing, and knowing object orientation.

ロードマップ

  1. プログラムを初めて作る人向けです。コンソール画面に「Hello World」と表示するプログラムを作成します。→Mainメソッドについて理解する
  2.  計算するプログラムを作成します。計算するためには「変数」を使用する必要があります。→変数と演算子について理解する【今回】
  3. 文字を操作するプログラムを作成します。文字を切ったり、つなげたりして文を編集するプログラムを作成します。→文字列クラス「String」の理解

Road Map

  1. For those who create programs for the first time. create program for display “Hello World” on the console screan.→ To understand the main method
  2. Create program for calcurate. In order to calcurate it is nessesary to use “valiable”.→To understand “valiable” and “operator”this time
  3.  Create program for manipurate characters. to edit sentencces by cutting, connecting characters.→To understand String class

計算プログラムについて(About caluculate program)

変数の宣言方法

「データ型 変数名;」のように記述します。
int num;
double d;
String moji;

この変数の宣言は宣言した時に変数にはデフォルト値が設定されます。
なので、具体的にどのような値が入るのかプログラムをみただけではわかりません。

変数の初期化方法

「データ型 変数名 = 値;」のように記述します。
int num = 1;
double d = 0.2;
String moji = "文字列";

変数の初期化に関しては、宣言の時と違い、どのような値が入っているのか、わかります。

変数の型について

これは丸暗記になります。以下の通りです。

データ型 意味
int型 整数を扱うためのデータ型
double型 小数点を含む数を扱うためのデータ型
String型 文字列を扱うためのデータ型

他にもたくさんありますが、まずはこの3つを覚えましょう。

Declearing valiable

wirte like this. →"DataType" "valiable name" = "value";
int num = 1;
double d = 0.2;
String moji = "文字列";

四則演算の方法

< 内容 >                  < 例 >
「+」足し算         int num = 1 + 1; // 変数「num」に2が入る
「-」引き算         int hiki = 2 – 1;   // 変数「hiki」に1が入る
」掛け算         int kake = 1 1; // 変数「kake」に1が入る
「/」割り算         int wari = 4 / 2; // 変数「wari」に2が入る

How to four arithmethic calculation

※変数=valiable
< sight >                  < example >
「+」addition          int num = 1 + 1; // 変数「num」に2が入る
「-」subtraction      int hiki = 2 – 1;   // 変数「hiki」に1が入る
」multiplication   int kake = 1 1; // 変数「kake」に1が入る
「/」division            int wari = 4 / 2; // 変数「wari」に2が入る

足し算を行なってみる

// サンプルコード
public class Test1_2 {
    public static void main(String[] args) {
      // int型「num1」を初期化する
      int num1 = 1;
      //int型「num2」を初期化する
    int num2 = 2;
      // String型「moji」を初期化する
      String moji = "1+2=";
      // int型「result」にnum1とnum2を足し算した結果を代入
      int result = num1 + num2;
      // 「moji」の次に「result」を文字列として繋げて表示する
      System.out.println(moji + result);
    }
}

ちなみに、変数の宣言は下のように書きます。宣言後、値を代入して使用します。

int num;
num = 9;

その他の演算(計算に使用)
< 内容 >                              < 例 >

「++」インクリメント          int num = 1++; // 変数「num」に2が入る
「–-」デクリメント               int hiki = 1–;    // 変数「hiki」に0が入る
「%」剰余                            int amari = 3 % 2 // 変数「amari」に1が入る

具体的には、下のように実装します。

  int start = 30;
  for (int i = 0; i < 3; i++) {
      // startをデクリメント
      start--;
      System.out.println("デクリメント後: " + start);
      System.out.println("そして、2で割ったときの剰余: " + start % 2);

  }

Other calculation

<サンプル>: ダウンロードできます。
<sample> : you can download.

// 変数宣言

int num1;

// 変数に値0を再セット、以前の値は削除される

num1 = 0;

public void testMethod() {
/*
 * 変数の初期化
 *  変数の宣言時に、値を代入する
 * 変数 = 値(代入)
 * valiable initialization
 * when you initialize valiable set values
 * valiable=value(substitution)
 */
 int num2 = 10;
 // 1.足し算
 num1 = num1 + num2 + 2;
 // 2.引き算
 num1 = num1 * (num1 – num2);
 // 3.掛け算
 num1 = num1 * 3;
 // 4.割り算
 num1 = num1 / 2;
 // 計算結果を表示
 System.out.println(“計算結果” + num1);
}

問題の前提条件

四則計算処理を使用して以下のような文字列をコンソールに出力してください。

[ 問題1 ]
mondai1メソッドを作成し、コンソールに以下を出力してください。
出力内容
————————–
「2 + 2 は 4です」
————————–

[Question1]
Create a method named "mondai1" for output as berrow
output sample
————————–
「2 + 2 は 4です」
————————–

 

[ 問題2 ]
mondai2メソッドを作成して、コンソールに以下を出力してください。
————————–
「10 % 3 は 1です」
————————–

[Question2]
Create a method named "mondai2" for output as berrow
output sample
————————–
「10 % 3 は 1です」
————————–

[ 問題3 ]
mondai3メソッドを作成して、コンソールに以下を出力してください。
————————–
初期値 = 30
デクリメント後: 29
そして、2で割ったときの剰余: 1
デクリメント後: 28
そして、2で割ったときの剰余: 0
デクリメント後: 27
そして、2で割ったときの剰余: 1
————————–

[Question2]
Create a method named "mondai3" for output as berrow
output sample
————————–
init vlaue = 30
after decerment: 29
surplus: 1
after decrement: 28
surplus: 0
after decrement: 27
surplus: 1
————————–


今日は、ここまでです。
でわでわ。。。
Today so far. see you next time. have a good day!

今回の記事には全く関係ありませんが、Javaでこんなアプリも作れます。JavaFX + Gluon


Java Basic

 Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic Level 1 〜Hello Java〜

イントロダクション

私事ですが、以前に書いた記事を再度書き直しわかりやすくしようと思います。一応国際化対応しておきます。

はじめの記事は、Javaを始めるのに一番はじめのプログラムを作成するところからはじめます。「Javaとはなんぞや?」というのはやってから理解すれば良いと思います。まぁ慌てずにのんびりやりましょう(笑)

まずは、以下の部分に注力してください。

  1. プログラムを作って
  2. プログラムを動かして
  3. 自分の考えた理論が正しかったことを確認

上記のことをひたすら繰り返してください。最後の「自分の考えた理論」が正しくなかった場合は、「なんでだろ?」と考えるようにしましょう。
**答えが出ない時もあると思うので、考えすぎに注意です**。

今回の内容をチュートリアル動画にしました。


Introduction

As for me, I will rewrite my blog for make understand easy. i will internationally.

The first article begins by creating the first program to start Java. Let's have fun!

I think that answers will come out when making, executing, and knowing object orientation.

ロードマップ

  1. プログラムを初めて作る人向けです。コンソール画面に「Hello World」と表示するプログラムを作成します。→Mainメソッドについて理解する【今回
  2.  計算するプログラムを作成します。計算するためには「変数」を使用する必要があります。→変数と演算子について理解する
  3. 文字を操作するプログラムを作成します。文字を切ったり、つなげたりして文を編集するプログラムを作成します。→文字列クラス「String」の理解

Road Map

  1. For those who create programs for the first time. create program for display "Hello World" on the console screan.→ To understand the main methodthis time
  2. Create program for calcurate. In order to calcurate it is nessesary to use "valiable".→To understand "valiable" and "operator"
  3.  Create program for manipurate characters. to edit sentencces by cutting, connecting characters.→To understand String class

Hello World

まずは「写経」です。「創造は模倣に始まる」と言います。

何も考えずとりあえず写経しましょう。。。と言いたいところですが。開発する環境がないことには何も始まりません。開発環境のセットアップはここのページを参照してください。

あと、動かして見たとき(遊んでみたとき)はこんな感じで表示されます。

細かい解説をしてみました。

クラスの概念について

開発環境がセットアップできたら、早速写経します。下のコードは、カラフルなコードになってしまいましたが、色の意味は以下の通りです。

クラスの名前→緑
class name → green

メイン・メソッド→紫
main method → purple
メソッド呼び出し→茶色
call method → brown
スコープ→赤 ※囲いのこと"{"と"}”
scope → red "{" and "}"

とりあえずはサンプルコードです。※Gitからダウンロードできます。そしてGit関連の記事は下にリンクがありますのでどうぞ。

public class HelloJava {
   public static void main(String[] args) {
      System.out.println("Hello World");
   }
}

実行すると以下のように表示されます。
after execute program, you can see like this

あれ?間違ったかな?

is it my mistake?

問題(Question)

<問1>
"Hello World"ではなく、"Step1"と表示するようにプログラムを書き換えてください。
<Question1>
Please rewrite program to display "Step1" instead "Hello World"

<問2>
"Hello World"と表示した後に"Tiger! Gaaa!!"と表示してください。
Please display "Tiger! Gaaa!" after displaying "Hello World"

国際化対応で記載しました。次回は計算するプログラムを作ります。

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

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 〜テストスイートの作り方〜

Git関連

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜

Java Basic クラスとは〜Step2_1〜

イントロダクション

Java言語での文法をちょっとやると「クラス」という言葉が出てきます。「インスタンス」とか、「オブジェクト」なんて言葉も一緒に出てきます。
これらの言葉は、目に見えないことが多く、初学者、ある程度学習した人でも認識が、あやふやになっていることが多いです。

しかし、難しく考えることはありません。いろんな人がいろんな言葉でモノを言うのでこんがらがりますが、シンプルに考えて問題ありません。
扱っているものは、所詮、機械なのですから

クラスとは

今までに、書いてきた、プログラム(クラス)は下のようにmainメソッドだけでした。

public class AAA {
   public static void main(String[] args) {
   }
 }

なので、クラスをクラスとして使用していませんでした。

具体的にはクラスには以下の要素があり、それぞれの機能を持たせることができます。

1:フィールド変数
2:メソッド

これらを使用して現実にある様々なものを表現できます。

例えば、全てを表現すると難しいので、部分的に「ゲーム機」をクラスで表現しようとすると、下のようになります。

クラス名: 某社〇〇ッチ
フィールド変数: カセットを入れるソケット
メソッド:ボタンを押す、ボタンを離す、ボタンを長押しする

部分的ではありますが、このように表現できます。注意点としてはこれらの名前が複数あるというところです。C言語で表現するときは「フィールド変数」は「メンバ変数」、メソッドのことは「メンバメソッド」などのように言語による違いが「言葉の違い」になり、それがまた混乱のもとになっていると思います。

そして、フィールド変数とメソッドがあれば、それはクラスであり、それ以上でも、それ以下でもない。というところを認識してください。
いろんな人が、いろんなことを言うので混乱することが多いと思います。※筆者が若いころは混乱しました。。。

例えば人間を表現してみます。※ほんのさわり部分のみです

public class Human {
   /** 年齢 */
   private int age;
   /** 性別 */
   private int sex;
   /** 挨拶する */
   public void greet() {
       System.out.println("Hello!");
   }
}

人間にはその人の年齢があり、性別他にもたくさんありますが、それぞれ「人間」と言う生き物に共通する要素があります。
それを「フィールド変数」として定義してやります。
そして、取りうる行動を「メソッド」として表現することができます。

例えば自転車ならば。。。

public class Bicycle {
    /** ハンドルのサイズ */
    private double handleSize;
    /** 車輪のサイズ */
    private double wheelSize;
    /** スピード */
    private double speed;
    /** 停止しているフラグ */
    private boolean isStop;
    /** 自転車をこぐ */
    public double start(int power) {
       speed = power * wheelSize;
       isStop = false;
    }
    /** 自転車の動き */
    public void bicybleState() {
        // 何かしらの処理。。。
    }
}

とまぁキリがなくなってきたので、ここら辺で自転車の実装を終わりにしますが、つまるところは。。。

フィールド変数とメソッドがあれば、「現実にあるもの」を「クラス」として表現できる。※あくまでも「文字や言葉を使って表現できる」
言い方を変えると、属性と操作があれば、何でも表現することができる ※部分的になりますが。。。
ちなみに、「属性と操作」は日本語で、英語にするならば「アトリビュート(Attribute)とオペレーション(Operation)」になります。

日本語だと意味が広いから混乱してしまうように思いますので、英語(カタカナ)で理解するのもよい方法だと思います。

と言うところがクラスの存在意義です。
そして、クラスがJavaプログラミングの基本になります。
そして、実行してみました。コードはこちらにあります

#### UML
ちなみに図で表現することもできます。それをUMLというものがありこのルールで記述したものは世界中のだれもが読めます。
下のような図です。
![](http://zenryokuservice.com/wp/wp-content/uploads/2022/03/ClassSample1.png)

### 初めのプログラムの解説

インスタンスとは

クラス(ファイルに記述したもの)の「コンストラクタ」の処理を通った後に出来る、オブジェクト。

<例>

ホームページにログインするとインスタンスが1個作られます。→ログイン処理でユーザーをあらわすクラスのコンストラクタでDBから取得した情報を保持します。この保持するためのオブジェクトの事をインスタンスと呼びます。

オブジェクトとは

構造体、クラスの事。データをセットしたり、ゲットしたり、何かの処理を行ったりします。構造体はクラスと同じ様な意味です。細かい所は混乱するので省きます。

オブジェクトはインスタンス化したもの。→コンストラクタを通ればオブジェクト。

<サンプルコード>

public class MyCls {
   //フィールド変数
   private String name;
   private int age;

   //コンストラクタ
   public MyCls() {
      this.age = 3;
   }

   //メソッド
   public void setName(String name) {
      this.name = name;
   }
}

カプセル化とは

1.

上記の様にフィールドへのアクセス(name)にはクラスの外からアクセス出来なくする事MyCls.name = “”;はエラーになる。

ちなみにフィールドをpublic String name;と書くと外部からアクセス出来る。MyCls.name = “”;はエラーにならない

2. データと処理をひとまとめにして、「役割」を果たすために外部へ提供する機能と、内部で使用する機能を分けて作成したクラス

クラスの構成のコメントをつけております。

サンプルはこちら

/** 外部の提供されているクラスをインポートする */
package jp.zenryoku.sample.cls;
java.io.BufferedReader;
java.io.IOException;
java.io.InputStreamReader;

/**
* javaAPIの使い方
* <span class="s2">@author</span> <span class="s3">takunoji</span>
*/
// クラス定義
public class Step2_1 {
// フィールド変数:クラスの全てのメソッドからアクセスできる
private String FIELD_HENSU="クラスの外からはアクセスできません。";
public String FIELD_HENSU2="クラスの外からはアクセスできます。";

// メインメソッド(必ずこの書き方になる)
public static void main(String[] <span class="s4">args</span>) {
    Step2_1 step = new Step2_1();
    // 入力を受け取り切らない場合は次のStreamに読み込まれる
    //123456step.arrayTest1();
    step.arrayTest2();
}
// 自作のメソッド(メンバメソッドともいう)
public void arrayTest1() {
  System.out.println("test1 入力開始");
  // バイト型の配列をサイズ5で作成する
  byte[] moji = new byte[5];
    // エラーハンドル用のくくり
  try {
        // 標準入力から入力を受け取る
        System.in.read(moji);
  } catch(Exception e) {
             e.printStackTrace();
  }
    // 入力は「バイト型」のデータなのでString型(参照型)を生成する
  System.out.println("入力じた文字:" + new String(moji));
}

public void arrayTest2() {
  System.out.println("test2 入力開始");
  // 読み込み用のクラスを宣言する<br/>
  BufferedReader read;<br/>
    // InputSreamReaderからBufferedReaderを作成する
    // System.in→標準入力、読み込むために上のクラスでラッップ(包む)して
    // 使用する。ラップとは System.inをInputSreamReaderで包む(拡張)する
    // ことを言います。
    read = new BufferedReader(new InputStreamReader(System.in));
  String line = "";
  try {
        // BufferedReader.readLineメソッドで1行読む。<br/>
        // Fileなどを読み込む時にも使用する<br/>
        line = read.readLine();
    } catch (IOException e) {
            e.printStackTrace();
    }
        System.out.println("入力じた文字:" + line);
    }
}

「public class クラス名」全ての人がアクセスできるクラスですよ、と定義する=>パブリック・スコープ
「private class クラス名」クラスの中からのみアクセスできるクラスと定義する=>プライベート・スコープ
「class クラス名」同じパッケージ内からアクセスできるクラスと定義する=>パッケージ・スコープ

「public 返却値 メソッド名」クラスの外からもアクセスできるメソッド
「private 返却値 メソッド名」クラスの中からのみアクセスできるメソッド

フィールド変数に関して、今回は使用していません。

Systemクラスについて
標準入力、出力、Javaの強制終了などJavaシステムの
基盤的なアプリケーションの機能を実装している。

クラス 変数名 = new クラス名();という書き方では
メソッドを使用できません。→その様に実装しているからです。

#### Systemクラスの説明
クラス名:System
フィールド変数:out
フィールド変数(クラス)のメソッド:println()
※[PrintStreamクラスの詳細はJavaDoc](https://docs.oracle.com/javase/jp/8/docs/api/java/io/PrintStream.html)を見ます。
```
public final class System extends Object {
/** PrintStreamというクラス */
public static final PrintStream out;
}

```

スタティックメソッドはクラスをnewしないで直接
クラス名.メソッド名の形で呼び出します。System.out.println()の場合は
スタティックフィールドoutを直接呼び出していますので**System.out**になります。
そしてPrintStreamクラスのメソッドprintln()を使用している。というわけです。

## まとめ
Javaプログラムを動かすには「クラス」が必要で、クラスをnewすると、オブジェクト(インスタンス)ができて、メンバメソッドが呼び出せる。
そして、クラスには「フィールド変数」と「メソッド」が定義出来て、フィールド変数、メソッドを必ずしも定義しなくてもよい。
アクセス修飾子やstaticメソッド修飾子などもあり、クラスにアクセスする方法を分けることができる。

これらの基本ルールを土台にして、プログラムを組み上げて一つのアプリケーションを作成することができる。

#### LWJGLのデモ動画
マイクラでも使っているフレームワーク**LWJGL**というものがあります。これはJava言語でできています。

関連ページ