दिलचस्प पोस्ट
स्कैनफ़ हो रही स्किप एन्जिल जेएस में और बनाम @ और = के बीच का अंतर क्या है अन्य सूची से मूल्यों के आधार पर सूची छंटनी? संख्याओं की एक सरणी को देखते हुए, अन्य सभी संख्याओं के उत्पादों की वापसी की श्रेणी (कोई विभाजन नहीं) पायथन में सीज़र साइफर फंक्शन एक वेब पेज पर एक HTML तालिका के अंदर एक MySQL डेटाबेस तालिका से मूल्य दिखाएं संसाधित प्रोसीस बनाम कोड में एसक्यूएल को रखने के पेशेवर और विपक्ष क्या हैं जेमीटर फ़ील्ड निकालने / JSON प्रतिक्रिया पार्सिंग किसी वेबसाइट पर Google डिस्क में संग्रहीत फ़ाइलों को प्रदर्शित करना (उदा क्या एसक्यूएल में "पसंद" और "इन" का एक संयोजन है? एक छवि फ़ाइल में Base64 स्ट्रिंग कन्वर्ट? लॉलीपॉप: स्थिति के पीछे खींचें रंग अपने रंग के साथ पारदर्शी पर सेट करें CodeBehind से जावास्क्रिप्ट फ़ंक्शन को कॉल करना शीर्ष स्तर की विंडो को पुनर्निर्देशित करने से IFRAME को कैसे रोकें कैसे एक धागा को समय समाप्ति के लिए

जावा में स्टेटिक ब्लॉक

मैं दूसरे दिन कुछ कोड को देख रहा था और मैं भर में आया:

static { ... } 

सी ++ से आ रहा है, मुझे नहीं पता था कि ऐसा क्यों था। यह एक त्रुटि नहीं है क्योंकि कोड ठीक संकलित कोड का यह "स्थिर" ब्लॉक क्या है?

वेब के समाधान से एकत्रित समाधान "जावा में स्टेटिक ब्लॉक"

यह एक स्थिर प्रारंभिक है इसे निष्पादित किया जाता है जब क्लास लोड किया जाता है (या प्रारंभ किया जाता है, सटीक होना है, लेकिन आप आमतौर पर अंतर को ध्यान नहीं देते हैं)

इसे "क्लास कन्स्ट्रक्टर" के रूप में माना जा सकता है

ध्यान दें कि उदाहरण इनिशियलाइज़र भी हैं, जो वही दिखते हैं, सिवाय इसके कि उनके पास static कीवर्ड नहीं है। ऑब्जेक्ट का एक नया उदाहरण बनाया जाता है, जब वे कन्स्ट्रक्टर में कोड के अतिरिक्त चलाए जाते हैं।

यह एक स्थिर प्रारंभकर्ता है इसे निष्पादित किया जाता है जब क्लास लोड किया जाता है और स्थैतिक चर का आरम्भिकरण करने के लिए एक अच्छी जगह है।

से http://java.sun.com/docs/books/tutorial/java/javaOO/initial.html

एक कक्षा में कोई भी स्थैतिक आरंभीकरण ब्लॉक हो सकते हैं, और वे कक्षा के शरीर में कहीं भी दिखाई दे सकते हैं। रनटाइम सिस्टम गारंटी देता है कि स्थैतिक आरंभीकरण ब्लॉक को उस क्रम में कहा जाता है, जो कि वे स्रोत कोड में दिखाई देते हैं।

यदि आपके पास एक स्थिर लुक-अप मानचित्र वाला क्लास है तो यह इस तरह दिख सकता है

 class MyClass { static Map<Double, String> labels = new HashMap<Double, String>(); static { labels.put(5.5, "five and a half"); labels.put(7.1, "seven point 1"); } //... } 

यह उपयोगी है क्योंकि उपरोक्त स्थैतिक फ़ील्ड को labels = ... का उपयोग करके प्रारंभ नहीं किया जा सकता था। इसे किसी तरह से पुट-पद्धति को कॉल करने की जरूरत है

यह कोड का एक ब्लॉक है जिसे क्लासलोडर द्वारा कक्षा लोड होने पर निष्पादित किया जाता है। इसका मतलब है कि कक्षा के स्थैतिक सदस्यों का आरम्भिकरण करना

गैर-स्थिर प्रारंभिक लिखना भी संभव है, जो भी अजनबी दिखते हैं:

 public class Foo { { // This code will be executed before every constructor // but after the call to super() } Foo() { } } 

स्टेटिक ब्लॉक का इस्तेमाल यह दिखाने के लिए किया जा सकता है कि कोई प्रोग्राम मुख्य फ़ंक्शन के बिना भी चला सकता है।

 //static block //static block is used to initlize static data member of the clas at the time of clas loading //static block is exeuted before the main class B { static { System.out.println("Welcome to Java"); System.exit(0); } } 

एक स्थैतिक ब्लॉक किसी भी कार्यक्रम के जीवन चक्र में एक बार निष्पादित करता है, स्थिर ब्लॉक की दूसरी संपत्ति यह है कि यह मुख्य विधि से पहले निष्पादित होती है।

स्टेटिक ब्लॉकों का उपयोग कोड को शुरू करने के लिए किया जाता है और जब JVM कक्षा को लोड करता है, तब निष्पादित किया जाएगा। नीचे दिए गए लिंक को देखें जो विस्तृत विवरण देता है। http://www.jusfortechies.com/java/core-java/static-blocks.php

हाँ, स्थिर ब्लॉक कोड का आरंभ करने के लिए उपयोग किया जाता है और यह निष्पादन के लिए जेवीएम प्रारंभ समय पर लोड होगा।

स्थिर ब्लॉक जावा के पिछले संस्करणों में उपयोग किया जाता है लेकिन नवीनतम संस्करण में यह काम नहीं करता है।