検索
ホームページJava&#&チュートリアルJava の基礎入門エッセイ (8) JavaSE バージョン - static static

オブジェクト指向(2)

this: オブジェクトを表します。それはどのオブジェクトを表していますか?現在のオブジェクト。

メンバー変数とローカル変数が同じ名前の場合、キーワード this を使用して区別できます。

これは、関数が属するオブジェクトへの参照です。 (簡単に言えば、どのオブジェクトが this が配置されている関数を呼び出すか、this はそのオブジェクトを表します。)

this は、コンストラクター内の他のコンストラクターを呼び出すために使用することもできます。注: コンストラクターの最初の行でのみ定義できます。初期化アクションを最初に実行する必要があるためです。

人name) このクラスのオブジェクトは通常これを使用します。

static:

特徴: 1.staticはメンバーを変更するために使用される修飾子です。

2. static によって変更されたメンバーは、すべてのオブジェクトによって共有されます。

3. クラスがロードされるときに静的メンバーがすでに存在するため、静的メンバーはオブジェクトの前に存在します。修 4. 静的に変更されたメンバーは、クラス名などのクラス名によって直接呼び出すことができます。

5. static によって変更されたデータは共有データであり、オブジェクトに格納される時間固有のデータは共有データです。

注: メンバー変数はインスタンス変数とも呼ばれ、静的に変更された変数は静的変数またはクラス変数と呼ばれます。

メンバー変数と静的変数の違い:

1. 2 つの変数のライフサイクルは異なります。

メンバー変数はオブジェクトの作成とともに存在し、オブジェクトがリサイクルされるとリサイクルおよび解放されます。

静的変数はクラスのロードとともに存在し、クラスの消滅とともに消滅します。

2.呼び出し方法が異なります。

メンバー変数はオブジェクトによってのみ呼び出すことができます。

静的変数はオブジェクトとクラス名によって呼び出すことができます (推奨)。

3. 別名が異なります。

メンバー変数はインスタンス変数と呼ばれ、

静的変数はクラス変数と呼ばれます。

4. データの保存場所が異なります。

メンバー変数データはヒープメモリ上のオブジェクトに格納されるため、オブジェクト固有データとも呼ばれます。

静的変数のデータはメソッド領域の静的領域(共有データ領域)に格納されるため、オブジェクトの共有データとも呼ばれます。

静的使用に関する注意事項:

1. 静的メソッドは静的メンバーのみにアクセスできます。 (非静的は静的と非静的の両方にアクセスできます) (注: 同じクラスの環境では、静的メソッドはこのクラスの静的メンバーのみを呼び出すことができることに注意してください)

2. 静的メソッド this または では使用できません。スーパーキーワード。

3. main 関数は静的です。

静的をいつ使用するか?

1. 静的変数。

分析オブジェクト内のすべてのメンバー変数が同じである場合、このメンバー変数は静的に変更できます。

データがオブジェクト内で異なる限り、それはオブジェクトの一意のデータであり、オブジェクトに保存する必要があり、非静的です。

同じデータの場合、オブジェクトを変更する必要はなく、オブジェクトに保存する必要はなく、静的に定義されます。

2. 静的機能。

関数が静的に変更されるかどうかに関係なく、唯一の参照点は、関数がオブジェクト内の固有のデータにアクセスできるかどうかです。

簡単に言うと、ソースコードから、関数が非静的メンバー変数にアクセスする必要があるかどうか、そうであればその関数は非静的である、そうでない場合はその関数は静的として定義できます。

もちろん、この関数は非静的として定義することもできますが、非静的はオブジェクトによって呼び出される必要があり、オブジェクトを作成するときに、固有のデータにアクセスせずに非静的メソッドを呼び出すためのオブジェクトを作成するだけでは意味がありません。

main 関数の特徴:

1. 形式は固定です。2. jvm によって認識され、呼び出されます。

public: 権限が最大である必要があるためです。

static: オブジェクトが必要ない場合は、メイン関数のクラス名を使用して直接呼び出してください。

void: main 関数には特定の戻り値がありません。

main: 関数名。キーワードではなく、jvm によって認識される単なる固定名です。

String[] args: main関数のパラメータリストです。配列型パラメータであり、要素はすべて文字列型です。 (main 関数を呼び出すときに渡すことができます。例: java mainDemo xx yy zz は、渡される 3 つの要素を持つ文字列配列です)

静的コード ブロック構築コード ブロック ローカル コード ブロック:

静的コード ブロック: With Executedクラスがロードされるとき。そして実行されるのは 1 回だけです。機能: クラスを初期化するために使用されます。

構築コードブロック: オブジェクトの作成時に実行され、オブジェクトの作成時に数回呼び出されます。機能: すべてのオブジェクトに対して初期化できます。 (コンストラクターとの違い: コンストラクターは、対応するオブジェクトの対象を絞った初期化を実行します。コンストラクター コード ブロックのオブジェクトの初期化は普遍的です。)

ローカル コード ブロックの役割: ローカル変数のライフ サイクルを制限します。

3 つの呼び出しシーケンスは次のとおりです:

class StaticCode
{
    static int num ;
    //静态代码块 (首先执行)
    static
    {
        num = 10;
//      num *=3;
        System.out.println("hahahah");
    }
    StaticCode(){}
 
    static void show()
    {
        System.out.println(num);
    }
}
 
class Person
{
    private String name;
     
     
 
    {//构造代码块。可以给所有对象进行初始化的。(如有调用对象,即其次调用,与局部代码块视情况而定)
 
        System.out.println("constructor code ");
//      cry();
    }
     
    static
    {
        System.out.println("static code");
    }
     
    Person()//是给对应的对象进行针对性的初始化。 
    {
        name = "baby";
//      cry();
    }
    Person(String name)
    {
        this.name  = name;
//      cry();
    }
    public void cry()
    {
        System.out.println("哇哇");
         
    }
 
    public void speak()
    {
        System.out.println("name:"+name);
    }
 
    static void show()
    {
        System.out.println("show run");
    }
}
 
 
class StaticCodeDemo 
{
    static
    {
//      System.out.println("a"); //先执行
    }
    public static void main(String[] args) 
    {
 
//      Person p = null;
//      p.speak();
 
//      Person.show();
//      Person p1 = new Person();
//      p1.speak();
//      Person p2 = new Person("旺财");
//      p2.speak();
//      new Person();
         
 
//      new StaticCode().show();
//      new StaticCode().show();
//      StaticCode.show();
//      System.out.println("b");    //后执行
    }
}

上記は Java エッセイの基本入門 (8) JavaSE バージョン - 静的コンテンツの詳細については、PHP 中国語 Web サイト (www.php) に注目してください。 .cn)!


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JVMのクラスローダーサブシステムは、プラットフォームの独立性にどのように貢献していますか?JVMのクラスローダーサブシステムは、プラットフォームの独立性にどのように貢献していますか?Apr 23, 2025 am 12:14 AM

クラスローダーは、統一されたクラスファイル形式、動的読み込み、親代表団モデル、プラットフォーム非依存バイトコードを通じて、さまざまなプラットフォーム上のJavaプログラムの一貫性と互換性を保証し、プラットフォームの独立性を実現します。

Javaコンパイラはプラットフォーム固有のコードを作成しますか?説明する。Javaコンパイラはプラットフォーム固有のコードを作成しますか?説明する。Apr 23, 2025 am 12:09 AM

Javaコンパイラによって生成されたコードはプラットフォームに依存しませんが、最終的に実行されるコードはプラットフォーム固有です。 1。Javaソースコードは、プラットフォームに依存しないバイトコードにコンパイルされます。 2。JVMは、特定のプラットフォームのバイトコードをマシンコードに変換し、クロスプラットフォーム操作を保証しますが、パフォーマンスは異なる場合があります。

JVMは、さまざまなオペレーティングシステムでマルチスレッドをどのように処理しますか?JVMは、さまざまなオペレーティングシステムでマルチスレッドをどのように処理しますか?Apr 23, 2025 am 12:07 AM

マルチスレッドは、プログラムの応答性とリソースの利用を改善し、複雑な同時タスクを処理できるため、最新のプログラミングで重要です。 JVMは、スレッドマッピング、スケジューリングメカニズム、同期ロックメカニズムを介して、異なるオペレーティングシステム上のマルチスレッドの一貫性と効率を保証します。

Javaの文脈では、「プラットフォームの独立」とはどういう意味ですか?Javaの文脈では、「プラットフォームの独立」とはどういう意味ですか?Apr 23, 2025 am 12:05 AM

Javaのプラットフォームの独立性とは、書かれたコードがJVMが変更なしでインストールされた任意のプラットフォームで実行できることを意味します。 1)JavaソースコードはBytecodeにコンパイルされ、2)BytecodeはJVMによって解釈および実行されます、3)JVMは、プログラムが異なるオペレーティングシステムで実行されることを確認するために、メモリ管理とガベージコレクション機能を提供します。

Javaアプリケーションは、プラットフォーム固有のバグや問題に遭遇する可能性がありますか?Javaアプリケーションは、プラットフォーム固有のバグや問題に遭遇する可能性がありますか?Apr 23, 2025 am 12:03 AM

JavaApplicationScanIndEDENCOUNTIONPLATFORM-SPECISTESUESUSESEJVM'SABSTRACTION.REASONSINCLUDE:1)NativeCodeandLibraries、2)OperatingSystemDifferences、3)JVMimplementationVariations、および4)HardweardePencies.TomiteTETETETESES、DEVELAPERSHOULD:1)

クラウドコンピューティングは、Javaのプラットフォーム独立の重要性にどのような影響を与えますか?クラウドコンピューティングは、Javaのプラットフォーム独立の重要性にどのような影響を与えますか?Apr 22, 2025 pm 07:05 PM

クラウドコンピューティングにより、Javaのプラットフォームの独立性が大幅に向上します。 1)JavaコードはBytecodeにコンパイルされ、異なるオペレーティングシステムでJVMによって実行され、クロスプラットフォーム操作が確保されます。 2)DockerとKubernetesを使用してJavaアプリケーションを展開して、携帯性とスケーラビリティを向上させます。

Javaのプラットフォームの独立性は、その広範な採用においてどのような役割を果たしましたか?Javaのプラットフォームの独立性は、その広範な採用においてどのような役割を果たしましたか?Apr 22, 2025 pm 06:53 PM

java'splatformendenceallowsdevelopersowritecodeodeonceanceandonitondeviceoros withajvm.

コンテナ化テクノロジー(Dockerなど)は、Javaのプラットフォーム独立性の重要性にどのように影響しますか?コンテナ化テクノロジー(Dockerなど)は、Javaのプラットフォーム独立性の重要性にどのように影響しますか?Apr 22, 2025 pm 06:49 PM

Dockerなどのコンテナ化技術は、Javaのプラットフォームの独立性を置き換えるのではなく、強化します。 1)環境全体の一貫性を確保し、2)特定のJVMバージョンを含む依存関係を管理する、3)展開プロセスを簡素化して、Javaアプリケーションをより順応性と管理しやすくする。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。