Javaを少しだけ学んでみた

はじめに

JSを学んでいてTSに入る前に静的型言語の理解を深めたく、Javaについて少し学んでみました。

✅ゴール
・Javaの理解を深める

✅環境
Windows/XAMPP/MySQL

✅参考教材
💻Progate

💻【初心者向け】Windows10にJavaをインストールする方法
JDKのインストール方法。

JDKの環境構築

JDK(Java Development Kit):開発用
JRE(Java Runtime Environment):稼動用

上記記事を参考にJavaをインストール。

HelloWorld.java

public class HelloWorld{
  public static void main(String[] args){
    System.out.println("こんにちは!!");
  }
}

コンパイルの実行

※この際にHelloWorld.classというファイルが生成される。

javac HelloWorld.java

コンパイルされたJavaを実行

java HelloWorld
>> こんにちは!

 

Javaの基本

✅Hello World

System.out.println()というのは、「()の中身を出力(表示)せよ」という「命令」※lは小文字のエル

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

✅Javaの構造

クラス>メソッド>処理部分となる

✅変数の定義

①データ型を指定する②変数の名前を決める③値更新時は型を付けない

int number = 3;
System.out.println(number); // 3
String name;
"Sato";
name = "Saito"
System.out.println(name); // Saito

✅データ型

int型:整数
double型:少数

※int型で5/2をすると2になる。
※int型とdouble型を合わせて演算すると、自動型変換されてdouble型となる。

int number1 = 13;
int number2 = 4;
System.out.println(number1/number2); // 3
System.out.println((double)number1/number2); // 3.25 ※強制型変換でdouble型に変換できる。

boolean型:真偽値のデータ型

✅if/else文

int number = 12;
if (number < 10) {
  System.out.println("10より小さい");
} else if (number < 20) {
  System.out.println("10以上、20より小さい");
} else {
  System.out.println("20以上");
}

✅配列

int[] numbers = {1,2,3};
System.out.println("私は"+numbers[0]+"番目です");

✅メソッド

定義の仕方。クラスの中に定義。呼び出しはメソッド名()。

public static void メソッド名() {
  実行する処理;
}
class Main {
  public static void main(String[] args) {
    hello();
  }
  public static void hello() {
    System.out.println("Hello Java");
  }
} // Hello Java

※argsは「arguments」の略で、意味は「引数」。voidは戻り値がないという意味でreturnがないメソッドにはvoidを指定する。

✅クラス

クラスの定義は「class クラス名」とする。また、頭文字は大文字。ファイル名は「クラス名.java」にしないといけない。
インスタンスの設計図になる。

※Main.java

class Main {
  public static void main(String[] args) {
    Person.hello();
  }
}

※Person.java

class Person {
  public static void hello() {
    System.out.println("Hello Java");
  }
}

🙄JavaScriptと違ってクラスとファイルに命名規則があるので、export,import(外部ライブラリに使用)しなくてもファイル間でデータが読み込めるのね。

・インスタンスの生成

「クラス型 変数名 = new クラス名()」で生成。インスタンスは変数に代入し、クラス名がそのままクラス型となる。
インスタンスフィールドとはインスタンスが持つ情報。インスタンスメソッドは、インスタンスのメソッド。
メソッド内でインスタンスフィールドにアクセスするためには「this」を用いる。クラス内のメソッドの定義の中でのみ使用可能。
コンストラクタ(クラス名と同じにする。)はnewを使ってインスタンスを生成した直後に自動で呼び出される特別なメソッド。

※Main.java

class Main {
  public static void main(String[] args) {
    Person person1 = new Person("Sato");
    person1.hello();
    Person person2 = new Person("Suzuki");
    person2.hello();
  }
}

※Person.java

class Person {
  public String name;
  Person(String name) {
    System.out.println("インスタンスが生成されました");
    this.name = name;
  }
  public void hello() {
    System.out.println("こんにちは、私は" + this.name + "です");
  }
}

出力

こんにちは、私はSatoです
こんにちは、私はSuzukiです

クラスメソッド(クラスに属するメソッド)

定義は「public static 戻り値の型 メソッド名()」。

✅カプセル化

使い手に必要ないものを隠してしまうこと。フィールドとメソッドへのアクセスを制限する。

クラスの外部からアクセスできるようにするには「public」を、アクセスできないようにするには「private」を用いて定義。

✅継承

既存のクラスのフィールドやメソッドを別のクラスに引き継ぐ機能。
継承されるクラスを「スーパークラス」、継承してできる新しいクラスを「サブクラス」と呼ぶ。

class サブクラス名 extends スーパークラス名」として定義。

・抽象メソッド:処理が未定のメソッドを定義するには、メソッドの先頭にabstractをつけて定義。

・多態勢:サブクラスのインスタンスを、スーパークラスのクラス型変数に代入すること

躓いた点

・日本語の文字化け 参考

日本語表記はSJISに変更して出力してあげる。

・大文字と小文字は区別される。

おわりに

2時間ほどでJavaの基本的な部分をさらってみました。

ファイル名にも命名規則があったり、静的型言語ということで、大規模な開発の案件に多い理由とTypeScriptが当たり前のように使われてきている理由が少しわかりました。

コメントを残す