برنامه نویسی

آیا می توانید خروجی این کد جاوا را پیدا کنید

در برنامه های جاوا، همیشه از دستورات اجرای خاصی برای بلوک های کد مختلف پیروی می کند. از این مقاله، من به بررسی چگونگی اجرای اجزای مختلف در جاوا (بلوک های استاتیک، بلوک های اولیه ساز نمونه، سازنده ها، متدها و غیره) با کمک مثال زیر می پردازم.

قبل از ادامه خواندن، سعی کنید خروجی کد جاوای زیر را خودتان تعیین کنید و قبل از اینکه ادامه دهید، آن را در زیر نظر دهید.

public class Execute {
    public Execute() {
        System.out.println("Hello from constructor");
    }

    public void method() {
        System.out.println("Hello from method");
    }

    static {
        System.out.println("Hello from static block");
    }

    {
        System.out.println("Hello from instance initializer block");
    }

    public static void main(String[] args) {
        System.out.println("Hello from main");
        Execute obj = new Execute();
        obj.method();
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی

من اکنون فرض می کنم که شما حداقل یک بار برای تعیین ترتیب خروجی تلاش کرده اید.

بنابراین خروجی کد جاوا فوق به صورت زیر خواهد بود:

Hello from static block
Hello from main
Hello from instance initializer block
Hello from constructor
Hello from method
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

آیا توانستید آن را به درستی تعیین کنید؟

حالا بیایید بررسی کنیم که چرا جاوا خروجی مانند بالا می دهد.

توضیح

وقتی کد جاوا بالا را اجرا می کنیم، ترتیب اجرا به صورت زیر است

  1. بلوک های استاتیک
  2. روش اصلی
  3. Instance Initializer Block
  4. سازنده
  5. روش اجرا

حال بیایید این مراحل را یکی یکی بررسی کنیم

1. بلوک های استاتیک

static {
    System.out.println("Hello from static block");
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بلوک استاتیک در جاوا یک بلوک از کد است که یک بار زمانی که کلاس توسط JVM (ماشین مجازی جاوا) در حافظه بارگذاری می شود، اجرا می شود. این قبل از اجرای متد اصلی یا هر کد مرتبط با نمونه دیگری اتفاق می افتد.

این بیشتر برای مقداردهی اولیه استاتیک، مانند تنظیم متغیرهای استاتیک، یا انجام هرگونه تنظیمات لازم در هنگام استفاده از کلاس برای اولین بار استفاده می شود.

در این کد، خط اول خروجی توسط بلوک استاتیک است:

Hello from static block
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2. روش اصلی

public static void main(String[] args) {
    System.out.println("Hello from main");
    Execute obj = new Execute();
    obj.method();
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

روش اصلی، نقطه ورود هر برنامه جاوا است. این جایی است که برنامه هنگام اجرا شروع به اجرای خود می کند.

پس از اجرای بلوک استاتیک، JVM شروع به اجرای کد داخل متد اصلی می کند.

در این کد خط دوم خروجی به روش main است:

Hello from main
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. Instance Initializer Block

{
    System.out.println("Hello from instance initializer block");
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک بلوک Initializer Instance در جاوا یک بلوک کد است که در یک کلاس تعریف می شود اما خارج از هر متد، سازنده یا بلوک ایستا تعریف می شود. هر بار که نمونه ای از کلاس ایجاد می شود، درست قبل از اجرای سازنده کلاس اجرا می شود.

وقتی یک شی با Execute obj = new Execute();، بلوک نمونه قبل از سازنده اجرا می شود. این بلوک برای مقداردهی اولیه خصوصیات مشترک اشیاء مفید است.

در این کد، خط سوم خروجی توسط بلوک Instance Initializer است:

Hello from instance initializer block
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

4. سازنده

public Execute() {
    System.out.println("Hello from constructor");
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سازنده یک روش خاص است که برای مقداردهی اولیه اشیاء استفاده می شود و هنگامی که یک شی جدید ایجاد می شود به طور خودکار فراخوانی می شود. باید همنام کلاس باشد و نوع برگشتی و حتی void ندارد.

هنگامی که یک شی ایجاد می شود، بلافاصله پس از بلوک اولیه ساز نمونه اجرا می شود. معمولاً برای مقداردهی اولیه متغیرهای نمونه یا اجرای هر منطق راه اندازی خاص برای آن شی استفاده می شود.

در این کد، خط چهارم خروجی توسط سازنده است:

Hello from constructor
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

5. اجرای روش

public void method() {
    System.out.println("Hello from method");
}

public static void main(String[] args) {
....
    Execute obj = new Execute();
    obj.method();
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در جاوا، اجرای متد به فرآیند فراخوانی یا فراخوانی یک متد برای انجام یک کار خاص اشاره دارد. متدها بلوک هایی از کد هستند که عملیات را انجام می دهند و اجرای آنها با فراخوانی متد از داخل برنامه آغاز می شود.

پس از ایجاد و مقدار دهی اولیه شی، تابع متد() را به صراحت فراخوانی می کنیم. این کد را در داخل بدنه متد اجرا می کند.

در این کد آخرین خط خروجی با اجرای متد است:

Hello from method
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چرا حکم اعدام اینقدر مهم است؟

درک ترتیب اجرا که در آن بلوک های مختلف اجرا می شوند برای اشکال زدایی و نوشتن برنامه های جاوا کارآمد مهم است. برای مثال:

بلوک های استاتیک برای مقداردهی اولیه ویژگی های سطح کلاس ایده آل هستند.
بلوک های نمونه برای منطق اولیه سازی شی مشترک ایده آل هستند.
سازنده ها برای مدیریت تنظیمات شی خاص ایده آل هستند.

با دانستن این ترتیب می توانید کدهای جاوا تمیزتر، کارآمدتر و قابل نگهداری بنویسید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا