学習記事一覧 · C#と他言語の比較

【学習】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 の形は、そのまま読みやすいことが多いです。
  • クラスやメソッドの意味も、説明なしでだいたい追えます。
  • 違いは、キーワードや環境の名前ConsoleSystem.out.Length.length など)として覚えればよいことが多いです。

授業で短く言うなら、例えば次のような言い方が通じやすいです。

  • 「Java は C# の いとこくらい似ている」
  • 「C# が分かると、Java は サンプルを読みながら進めやすい」

まとめ

  • 変数・if・for・配列の基本は、並べるとかなり似ている。
  • クラスの考え方も同じ。違いは 命名の慣習なども含めて少しずつ。
  • 実行環境は .NET と JVM で別物として覚える。
  • プロパティは C# で便利な機能として強い。Java では getter/setter で書くことが多い。

細部は言語ごとに違いますが、いま C# でやっている学習は、Java に触れたときにも 土台としてそのまま活きます


発展(次のステップの例)

必要なら、次のようなものも別記事や課題にできます。

  • C# → Java の変換練習(短いコードを書き換える)
  • C# / TypeScript / Java の対応表(一覧で見る)

焦らず、まずは 似ている部分を頼りに、違う名前を覚えていけば大丈夫です。