Java Tips

Java環境構築

$:~/GitHub/Java_lang$ uname -a
Linux C-PF3K54JM 5.15.79.1-microsoft-standard-WSL2 #1 SMP Wed Nov 23 01:01:46 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

$:~/GitHub/Java_lang$ java --version
openjdk 17.0.4.1 2022-08-12 LTS
OpenJDK Runtime Environment Microsoft-40354 (build 17.0.4.1+1-LTS)
OpenJDK 64-Bit Server VM Microsoft-40354 (build 17.0.4.1+1-LTS, mixed mode, sharing)

$:~/GitHub/Java_lang$ mvn --version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 17.0.4.1, vendor: Microsoft, runtime: /usr/lib/jvm/msopenjdk-17-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.79.1-microsoft-standard-wsl2", arch: "amd64", family: "unix"

Java Language

コーディングルール

  • ソースファイル名は「クラス名.java」とする。
  • クラス名はアルファベットの大文字で始める
  • コード行の終わりは;(セミコロン)
public class MyClass {
    public static void main(String[] args) {

    }
}

// - publicは外部からアクセス可能なことを宣言する
// - staticはインスタンス化しなくても実行できる
// - voidはreturnでの返しが不要
// - Stringの後は配列の[]ではなく...でも可能
  • コメント
複数行コメント
/*
    コメント
*/

単一行コメント
// コメント

変数宣言

  • 型 変数 の順番
  • 予約後は使えない(50語)
  • 全角/半角は使えない
  • 小文字で書くことが一般的
  • 2つの単語をつなげるときは、2語目の単語を大文字 myArg
int age;   //変数宣言
age = 30;  //値を代入

int old = 30  //変数宣言と値代入を同時に行う

int myAge = 50

データ型

■3つのデータ型

  • プリミティブ型
  • オブジェクト型
  • 列挙型

■プリミティブ型(8つの型)

分類 データ型 保持するデータ
整数型 byte 8ビット型
short 16ビット型
int 32ビット型
long 64ビット型
浮動小数点数型 float 32ビット符号付き浮動小数点数
double 64ビット符号付き浮動小数点数
文字型 char 文字(16ビットUnicode文字)
真偽値型 boolean true(真)、false(偽)
  • char型はプリミティブ型で、1文字を扱い”で囲む必要がある
  • String型はオブジェクト型で、複数文字を扱い""で囲む必要がある
  • 金額の計算にfloatやdoubleを使ってはいけない。

■オブジェクト型

■列挙型

■定数

final int num = 100;
  • 定数とは値の変更できない変数のこと

キャスト(型変換)

// キャストによる型変換
long a = 100;
int b = (int) a;
  • 小さい型から大きな型への変換は、暗黙の型変換が必要
  • 大きい方から小さい方への変換は、明示的な型変換が必要

予約語

1 2 3 4 5
abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return short static strictfp super
switch synchronized this throw throws
transient try void volatile while

命令文

// 引数の中の最大値を選択する
int m = Math.max(4, 19);
System.out.println(m);

// 19

// Stringの数字をintの数字に変換する
int n = Integer.parseInt("55");
System.out.println(n);

// 55

// 1から4までの整数の乱数を生成する
int fortune = new java.util.Random().nextInt(4) + 1;
System.out.println(fortune)

if文

int num = 3;

if (num == 1) {
    System.out.println("Num is 1");
} else if (num == 2) {
    System.out.println("Num is 2");
} else {
    System.out.println("Num is out of range");
}

// Num is out of range

int dice = (int) (Math.random() * 7) + 1;

/* 
Math.randomは、0から1までの乱数を発生させる
その数に7をかけて1以上にするために1を最後に足して
intにキャストして1から7までの数字が乱数として
出力することになっている。
*/

if (dice > 0 && dice < 7) {
    if (dice == 2 || dice == 4 || dice == 6) {
        System.out.println("Even Number!");
    } else {
        System.out.println("Odd Number!");
    }
} else {
    System.out.println("The number is out of range!");
}

Switch文

  • 「変数 == 値 (a == 3)」や「変数 == 変数 (a == b)」のような左辺と右辺の一致を比較する式になっていて、!= などが使われていないif文
  • 条件値には整数、文字列、文字を使う
int num = 3;
switch (num) {
    case 1:
        System.out.println("one");
        break;
    case 2:
        System.out.println("two");
        break;
    case 3:
        System.out.println("Three");
        break;
    default:
        System.out.println("Out of range!");
}

for文

  • for (初期値; 繰り返し条件; 繰り返し時処理) { }
  • ブロック内で利用可能
  • for分を抜けると利用できない
public static void main(String[] args) {
    for (int i = 0; i <= 5; i++) {
        System.out.println(i + " ");
    }

    System.out.println("-----------");

    for (int i = 5; i >= 0; i--) {
        System.out.println(i + " ");
    }

    for (int i = 1; i < 10; i++) {
        for (int j = 1; j < 10; j++) {
            int kuku = i * j;
            System.out.println(i + " x " + j + " = " + kuku);
        }
    }
}

// 結果
0 
1 
2 
3 
4 
5 
-----------
5 
4 
3 
2 
1 
0 

1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5
1 x 6 = 6
1 x 7 = 7
1 x 8 = 8
1 x 9 = 9
2 x 1 = 2
2 x 2 = 4

while文


配列

配列の宣言

int[] array;    // 基本型
int array[];    // C言語の入力方法もサポート

int[] array = new int[3];   //要素の3つを扱う配列の作成
  • 同じ型の集合だけ扱える(int型、double型)
  • 扱える数は後から変更できない
  • 値にはインデックス番号を使ってアクセスする (array[0], array[1])
// 配列の宣言と作成
jshell> int[] array;
array ==> null

jshell> array
array ==> null

jshell> int[] array = new int[3];
array ==> int[3] { 0, 0, 0 }

jshell> array
array ==> int[3] { 0, 0, 0 }


// 要素の追加と要素へのアクセス
jshell> array[0] = 10;
$1 ==> 10

jshell> array[1] = 20;
$2 ==> 20

jshell> array[2] = 30;
$3 ==> 30

jshell> array;
array ==> int[3] { 10, 20, 30 }

jshell> array[0]
$4 ==> 10

// 要素数を数える
jshell> array.length
$5 ==> 3

forと配列

int[] scores = {20, 30, 40};

// 基本的なfor文
for (int i = 0; i < scores.length; i++) {
    System.out.println(scores[i]);
}

// 拡張for文(他言語ではfor each文と呼ばれる)
for (int score : scores) {
    System.out.println(score);
}