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);
}