ورود

View Full Version : تفاوت بین Constructor و static block در چیست؟



ali_khodayar
شنبه 02 مرداد 1395, 16:24 عصر
سلام خدمت دوستان .

کسی اطلاعی داره که فرق بین constructor و static Block در چیه؟

منظورم از static Block :







[*=left]class A2{
[*=left] static{System.out.println("static block is invoked");}
[*=left] public static void main(String args[]){
[*=left] System.out.println("Hello main");
[*=left] }
[*=left]}



که خروجی به صورت زیر است :


Output:static block is invoked
Hello main

Sina.iRoid
شنبه 02 مرداد 1395, 18:22 عصر
سلام
استاتیک بلاک فقط یکبار برای همیشه (زمانی که کلاس لود میشه) اجرا میشه، اما سازنده هر زمانی که از روی کلاس آبجکت ساخته بشه، اجرا میشه.

vahid-p
یک شنبه 03 مرداد 1395, 13:35 عصر
بلاک static یک بار همونطور که دوست عزیزمون گفتن اجرا میشه. از نظر زمانی تا وقتی کاری به کلاس نداشته باشیم، اون قسمت اجرا نمیشه مگر اینکه بخوایم یک یا چند آبجکت بسازیم که اولین بار قبل از اجرای Constructor بلاک static اجرا میشه. یا قبل از اولین صدا زدن متد static، بلاک static اجرا میشه. یا قبل از اولین دسترسی به فیلد static، بلاک static اجرا میشه.
به هر حال هر وقت از این کلاس برای اولین بار بخواد استفاده ای بشه (چه ساخت آبجکت باشه چه صدا زدن متد استاتیک و فیلد استاتیک و...)، اول این بلاک اجرا میشه.