対象:C言語経験者 / 目標:VSCodeでJavaを書いて動かせるようにします
| やること | 確認 |
|---|---|
| JDKのインストール | |
| VSCodeのインストール・拡張機能 | |
| 作業フォルダの準備 | |
| HelloWorldを動かす | |
| 2本目のプログラムを動かす |
Javaを動かすまでの手順はC言語と少し違います。理由から理解しておきましょう。
ソース(.c)実行ファイル(.exe)ソース(.java)バイトコード(.class)| 用語 | 意味 | C言語で言うと |
|---|---|---|
javac | コンパイラ。.javaを.classに変換 | gcc |
java | JVMで.classを実行 | 生成した.exeを実行 |
.class | バイトコード(中間コード) | .exeに相当(ただしOS専用ではない) |
| JVM | Java仮想マシン。.classを動かす | なし(Cには不要) |
| JDK | javac + java + 開発ツール一式 | gccに相当 |
ブラウザで https://adoptium.net/ を開く
「Latest LTS Release」からダウンロード
ダウンロードした .msi ファイルを実行
途中の「カスタム セットアップ」画面で以下を確認・変更:
| 項目 | 設定 |
|---|---|
| Add to PATH | ✅ 「ローカル ハード ドライブにインストール」 |
| Set JAVA_HOME variable | ✅ 「ローカル ハード ドライブにすべてインストール」 |
コマンドプロンプトを新規で開いて(インストール前に開いていたものは閉じる)実行:
java -version javac -version
https://code.visualstudio.com/ から「Download for Windows」
Extension Pack for Java と入力フォルダ名で番号管理します。こうするとエクスプローラーで順番に並ぶ。
java-lessons/
├── 00_HelloWorld/
│ └── HelloWorld.java
├── 01_Calculation/
│ └── Calculation.java
├── 02_xxx/
...
java-lessons フォルダを選択00_HelloWorld フォルダを右クリック →「新しいファイル」HelloWorld.java の中のクラス名は必ず HelloWorld
VSCodeが自動で内容を書いてくることがあります。全部消して以下だけを入力します。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Ctrl+S で保存 → 右上の ▶ ボタン をクリック
Hello, World! と表示されれば成功左のエクスプローラーを見てみましょう。00_HelloWorldフォルダに何が増えているか?
HelloWorld.class が生成されているはず。
これがバイトコード(.classファイル)。javacが自動で作った。JVMはこのファイルを読んで実行しています。
C言語でいう .exe に相当するが、OS専用ではなくどのOSのJVMでも動く。
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
| C言語 | Java | 違い |
|---|---|---|
#include | 不要(基本は自動) | よく使うものは最初から使える |
int main(void) | public static void main(String[] args) | クラスの中に書く。argsはコマンドライン引数 |
printf("...\n") | System.out.println("...") | printlnは自動で改行されます |
return 0; | 不要 | voidなので返り値なし |
01_Calculation フォルダに Calculation.java を作成
public class Calculation {
public static void main(String[] args) {
int a = 10;
int b = 3;
System.out.println("足し算: " + (a + b));
System.out.println("引き算: " + (a - b));
System.out.println("掛け算: " + (a * b));
System.out.println("割り算: " + (a / b)); // 整数除算(小数切り捨て)
System.out.println("あまり: " + (a % b));
}
}
a / b の結果はなぜ 3.333... ではなく 3 なのか?
int(整数型)同士の割り算は、小数点以下が切り捨てられます(整数除算)。
小数が必要な場合は double 型を使います。
double a = 10; double b = 3; System.out.println(a / b); // → 3.3333333333333335
これはC言語と同じルール。
試験の後半(問5・問6)では、プログラムに引数を渡して実行する問題が頻出します。
▶ボタンでは引数を渡せないため、ターミナルから実行します方法を覚えておく。
02_Args フォルダに Args.java を作成
public class Args {
public static void main(String[] args) {
System.out.println("引数の数: " + args.length);
System.out.println("1番目の引数: " + args[0]);
}
}
VSCode下部の「ターミナル」タブで以下を実行:
cd (02_Argsフォルダのパス) javac Args.java java Args Hello
java Q5 11.25 のように引数付きで実行する問題が出る。| エラー内容 | 原因 | 対処 |
|---|---|---|
java が認識されない | JDKのPATH未設定 | PCを再起動、またはJDKを再インストール時にPATHを有効化 |
| ▶ボタンが出ない | 拡張機能が未認識 | VSCodeを再起動、初回は少し時間がかかる |
class XXX is public, should be declared in a file named XXX.java | ファイル名とクラス名の不一致 | 両方を同じ名前(大文字小文字も)に統一 |
package xxx does not exist のような表示 | VSCodeが自動でpackage行を追加した | 1行目の package ... を削除します |
| 確認事項 | 確認 |
|---|---|
java -version と javac -version が表示されます | |
| VSCodeにExtension Pack for Javaが入っています | |
| HelloWorldが実行できた | |
| .classファイルが生成されていることを確認した | |
| Calculationが実行できた |