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

فیلد استاتیک

فیلدی است که با کلمه ی کلیدی static و به این صورت تعریف می شود:

private static int ballCount;

جایگاه کلمه ی Static را می توان با جایگاه های کلمات کلیدی نوع دسترسی (private، public و protected) عوض کرد. به عنوان مثال این عبارت هم صحیح است:

;static private int ballCount

اما اکثر برنامه نویس ها به طور رایج عادت دارند که ابتدا کلمه ی کلیدی مربوط به نوع دسترسی را وارد کنند.  

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

فیلدهای استاتیک وقتی که کلاس برای نخستین بار بارگذاری می شود، ساخته و مقداردهی اولیه می شوند. و این اتفاق زمانی می افتد که به یک عضو استاتیک کلاس اشاره شود یا اینکه یک نمونه از کلاس ساخته شود.

متد استاتیک

متدی است که با کلمه ی کلیدی static تعریف می شود. متدهای استاتیک هم مثل فیلدهای استاتیک به خود کلاس تعلق دارند نه به یک آبجکت خاص که توسط کلاس ساخته شده. در نتیجه لازم نیست قبل از استفاده از متدهای استاتیک تعریف شده توسط کلاس یک آبجکت از کلاس بسازید.

معروف ترین متد استاتیک main است که برای شروع اپلیکیشن توسط java runtime فراخونی می شود. متد main باید استاتیک باشد، به این معنا که اپلیکیشن ها به طور پیش فرض در یک محیط استاتیک به اجرا در می آیند.

یکی از قوانین اصلی کار با متدهای استاتیک این است که شما نمی توانید از طریق یک متد استاتیک به یک متد یا فیلد غیر استاتیک دسترسی داشته باشید چون متد استاتیک هیچ نمونه ای از کلاس را برای استفاده در اشاره به متدها و فیلدهای نمونه ندارد.