【学習】C# と Java の比較(生徒向け・やさしい版)
C# を学んでいると、あとから Java の名前を見る機会があります。求人票、他校のカリキュラム、ネットの記事などです。
「別の言語」と聞くと難しそうに感じますが、C# と Java は 兄弟に近いくらい似ています。今回は、何が同じで、どこが違うかを整理します。
この記事で扱うこと: 変数・if・for・配列・クラスの見た目の比較、実行環境の違い、プロパティと getter/setter の違いです。細かい文法の全部は扱いません。
まず結論
C# と Java は、文法の骨格がかなり似ています。
「まったく別物」ではなく、いとこや兄弟のように近いと考えるとわかりやすいです。
ただし、細部まで同じではありません。パッケージやファイルの置き方、Main の書き方など、あとから違いが出てきます。ここでは 最初の地図として、よく並べる部分だけそろえます。
主にどこで使われるか
| 言語 | 主な用途の例 |
|---|---|
| C# | Windows アプリ、Unity、業務システム、サーバー開発 など |
| Java | 業務システム、Web のサーバー側、Android(従来からのコード)など |
補足: Android の新規開発では Kotlin がよく使われます。Java は依然として現場にありますが、求人や記事で Kotlin の名前も並ぶことがあります。
変数はほぼ同じ
int age = 20;
string name = "Taro";int age = 20;
String name = "Taro";- int などの基本型の書き方は同じです。
- 文字列は、C# では
string(小文字)をよく使います。Java ではString(大文字の S)です。
if 文もほぼ同じ
if (age >= 18)
{
Console.WriteLine("成人");
}
else
{
Console.WriteLine("未成年");
}if (age >= 18) {
System.out.println("成人");
} else {
System.out.println("未成年");
}違いの目印(出力)
| 言語 | コンソールへの出力 |
|---|---|
| C# | Console.WriteLine |
| Java | System.out.println |
条件の書き方そのものは同じです。
for 文もほぼ同じ
for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}for (int i = 0; i < 5; i++) {
System.out.println(i);
}- 初期化・条件・更新の並びは同じ考え方です。
配列もほぼ同じ
string[] fruits = { "りんご", "みかん", "ぶどう" };
Console.WriteLine(fruits.Length);String[] fruits = { "りんご", "みかん", "ぶどう" };
System.out.println(fruits.length);注意(大文字・小文字)
| 言語 | 要素数 |
|---|---|
| C# | Length(大文字の L) |
| Java | length(すべて小文字) |
クラスも考え方は同じ(命名の慣習が少し違う)
どちらも クラス に フィールド と メソッド を持てます。
class Player
{
public int hp = 100;
public void Attack()
{
Console.WriteLine("攻撃");
}
}class Player {
int hp = 100;
void attack() {
System.out.println("攻撃");
}
}よくある慣習
- C# では、public メソッドの名前に PascalCase(例:
Attack)を使うことが多いです。 - Java では、メソッドの名前に camelCase(先頭小文字、例:
attack)を使うことが多いです。
中身の「クラスでまとめる」「メソッドで動きを書く」という考え方は共通しています。
大きな違い(ここから先は少しずつ)
① 実行の仕組み
| 言語 | ざっくりしたイメージ |
|---|---|
| C# | .NET 上で動く |
| Java | JVM(Java Virtual Machine)上で動く |
どちらも 仮想環境の上で動くタイプの言語、と大雑把に捉えられます。
② var(バージョンに注意)
var x = 10;var x = 10; // Java 10 以降の「ローカル変数」向け。古い環境では使えないことがあるC# の var と似た役割ですが、Java 側は バージョンと設定で使えないことがあります。
③ プロパティ(C# にあり、Java の基本文法にはない)
C# では、次のような プロパティ がよく使われます。
public int Hp { get; set; }Java の基本の書き方では、同じことを フィールド+getter/setter で書くことが多いです。
private int hp;
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}「自動で用意される書き方」と「自分でメソッドを書く」の違い、と最初は覚えておけば十分です。
共通している考え方(ここがいちばん大事)
- 型がある
- クラスがある
- メソッドがある
- オブジェクト指向で考える
言語名が違っても、この枠組みはそのまま持ち運べます。
C# を学んだ人が有利な理由
- if や for の形は、そのまま読みやすいことが多いです。
- クラスやメソッドの意味も、説明なしでだいたい追えます。
- 違いは、キーワードや環境の名前(
ConsoleとSystem.out、.Lengthと.lengthなど)として覚えればよいことが多いです。
授業で短く言うなら、例えば次のような言い方が通じやすいです。
- 「Java は C# の いとこくらい似ている」
- 「C# が分かると、Java は サンプルを読みながら進めやすい」
まとめ
- 変数・if・for・配列の基本は、並べるとかなり似ている。
- クラスの考え方も同じ。違いは 命名の慣習なども含めて少しずつ。
- 実行環境は .NET と JVM で別物として覚える。
- プロパティは C# で便利な機能として強い。Java では getter/setter で書くことが多い。
細部は言語ごとに違いますが、いま C# でやっている学習は、Java に触れたときにも 土台としてそのまま活きます。
発展(次のステップの例)
必要なら、次のようなものも別記事や課題にできます。
- C# → Java の変換練習(短いコードを書き換える)
- C# / TypeScript / Java の対応表(一覧で見る)
焦らず、まずは 似ている部分を頼りに、違う名前を覚えていけば大丈夫です。