「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > トランジションガイド:JavaからJavaScriptまで

トランジションガイド:JavaからJavaScriptまで

2025-02-06に投稿しました
ブラウズ:505

昨年、私はプログラミングを再訪し、休憩後にJavaに焦点を当てました。 私の目標は、Pythonよりも挑戦的な言語でした。 Javaのコアコンセプトの習得に3〜4か月を捧げました。その運用力学、オブジェクト指向プログラミング(OOP)、メモリ管理、およびJDBCを介したデータベース接続。

最近、私はJavaScriptから始めて、Web開発に移行しました。 JavaScriptを数日間探索した後、JavaとJavaScriptの重要な区別と、スムーズな遷移がどのように可能かについての観察と洞察を共有したいと思っています。


コアの違い

最も印象的な違いは、データ型宣言にあります。 JavaScriptは、Javaの静的タイピングとは異なり、動的にタイプされます。どちらのアプローチにもメリットと欠点がありますが、重要な区別に焦点を当てます。JavaScriptのシングルスレッドの自然は、Javaのマルチスレッド機能とは対照的です。

java vs. javascript:単純なアナロジー

Javaは細心の、詳細指向の兵士として想像してください。 指示は正確でなければならず、タスクとその理論的根拠の両方を指定します。逆に、JavaScriptはリラックスした友人に似ています。過度の詳細なしでタスクを効率的に完了します。タスクを差し引いて、実行を処理します。

Transition Guide: From Java to JavaScript

データ型処理

javaは、明示的なデータ型宣言(例:

string int float boolean )を定義するときに義務付けます。 ただし、JavaScriptは柔軟です。変数は、 let または const (定数)を使用して宣言され、型決定は実行時に発生します。 var も同様の目的を果たしましたが、 let および const が希望されます。

javaの例:

class Main {
    public static void main(String[] args) {
        int a = 5;
        int b = 6;
        int result = a   b;
        System.out.println(result);
    }
}

javascriptの例:

let a = 5;
let b = 6;

let sum = a   b;

console.log("The sum is: "   sum);

java and javascriptの発散

JavaScriptでOOPを理解することは、その広範な使用を考えると重要です。 JavaScriptの動的タイピングを超えて、プロトタイプを介してプロトタイプベースの継承特性です。 ポストES6、JavaScriptはクラスでOOPを完全にサポートしていますが、基本的にプロトタイプに依存しています。

次のコードスニペットは、クラスとメソッドの作成における構文の違いを示しています:

java:

クラスの人{ 文字列名; 人(文字列名){ this.name = name; } void greet(){ system.out.println( "hello、" name); } public static void main(string [] args){ 人の人=新しい人( "ジョン"); person.greet(); } }
class Person {
    String name;

    Person(String name) {
        this.name = name;
    }

    void greet() {
        System.out.println("Hello, "   name);
    }

    public static void main(String[] args) {
        Person person = new Person("John");
        person.greet();
    }
}
javascript:

クラスの人{ コンストラクター(名前){ this.name = name; } 挨拶する() { console.log( `hello、$ {this.name}`); } } const person = new Person( "John"); person.greet();
class Person {
    constructor(name) {
        this.name = name;
    }

    greet() {
        console.log(`Hello, ${this.name}`);
    }
}

const person = new Person("John");
person.greet();

Javaでは、オブジェクト作成にはクラス定義が必要です。 JavaScriptは柔軟性を提供します。オブジェクトは、明示的なクラス宣言なしで直接作成できます。

Javaは、すべてのオブジェクトがクラスのインスタンスであることを要求します。 JavaScriptは直接オブジェクトの作成を許可します:

javascript

const person = { 名前:「ジョン」、 挨拶:function(){ console.log( `hello、$ {this.name}`); } }; person.greet();
const person = {
    name: "John",
    greet: function() {
        console.log(`Hello, ${this.name}`);
    }
};

person.greet();
相続メカニズム

継承構文は、両方の言語で類似性を示しています。

java:

class動物{ void sound(){ System.out.println( "Some Sound"); } } クラスドッグは動物を伸ばします{ void sound(){ System.out.println( "Bark"); } } パブリッククラスメイン{ public static void main(string [] args){ 犬の犬= new Dog(); dog.sound(); } }
class Person {
    String name;

    Person(String name) {
        this.name = name;
    }

    void greet() {
        System.out.println("Hello, "   name);
    }

    public static void main(String[] args) {
        Person person = new Person("John");
        person.greet();
    }
}
javascript:

class動物{ 音() { console.log( "Some Sound"); } } クラスドッグは動物を伸ばします{ 音() { console.log( "Bark"); } } const dog = new Dog(); dog.sound();
const person = {
    name: "John",
    greet: function() {
        console.log(`Hello, ${this.name}`);
    }
};

person.greet();
カプセル化の考慮事項

JavaScriptのカプセル化はJavaのものよりも弱い。アクセス修飾子(

private

protected public )がありません。 ただし、ES2022で導入された(プライベートフィールド)の表記法は、ある程度のプライベートフィールドコントロールを提供します。 クラスの人{ #名前; コンストラクター(名前){ this。#name = name; } 挨拶する() { console.log( `hello、$ {this。#name}`); } } const person = new Person( "John"); person.greet(); console.log(person。#name); //エラー:プライベートフィールド '#NAME'は、囲いのクラス

class Person {
    #name;

    constructor(name) {
        this.#name = name;
    }

    greet() {
        console.log(`Hello, ${this.#name}`);
    }
}

const person = new Person("John");
person.greet();
console.log(person.#name);  // Error: Private field '#name' must be declared in an enclosing class

Javaは、コンパイル時間の多型(メソッドオーバーロード)とランタイム多型(メソッドオーバーライド)をサポートしています。

JavaScriptは、その解釈された性質とコンパイル時間チェックの欠如により、メソッドの過負荷をサポートしていません。 ただし、オーバーライドのメソッドはサポートされています:

class動物{ 音() { console.log( "Some Sound"); } } クラスドッグは動物を伸ばします{ 音() { console.log( "Bark"); } } const dog = new Dog(); dog.sound(); // 吠える

            
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3