2012-05-04 16 views

उत्तर

7

मुझे नहीं लगता कि यह एक आसान सवाल यह कुछ भाषा के आधार पर थोड़ा अलग है क्योंकि जवाब देने के लिए है।

एक स्थिर चर एक चर है कि एक वर्ग के सभी उदाहरणों भर में साझा किया जाता है: मैं सबसे सामान्य शब्दों जो शायद बेतहाशा हर व्यक्ति के लिए अलग अलग होंगे में रख करना हो तो।

एक स्थिर विधि एक विधि है कि एक वर्ग पर कहा जा सकता है और आम तौर पर वर्ग की आवश्यकता नहीं है instantiated जा रहा है।

फिर अगर मैं तीन अलग-अलग भाषाओं को चुनना चाहता हूं तो मैं तीन अलग-अलग उत्तर दूंगा।

विकिपीडिया इन चीजों को परिभाषित करने में थोड़ा सा मदद भी कर सकता है।

http://en.wikipedia.org/wiki/Method_(computer_programming) http://en.wikipedia.org/wiki/Static_variable

+0

मैं विशेष रूप से जावा के बारे में बात कर रहा हूँ instantiated नहीं किया। – WAMoz56

15

जावा में, static के रूप में उदाहरण के तरीकों और उदाहरण चर) का विरोध करने को दर्शाता है class methods और वर्ग चर (। इन विधियों और चरों को एक उदाहरण के बिना पहुंचा जा सकता है।

उदाहरण के तरीकों और उदाहरण चर के विपरीत इस: वे एक वस्तु के माध्यम से पहुँचा किया जाना चाहिए। उदाहरण के लिए, length() एक वस्तु पर चल रही है:

String a = "hello"; 
int len = a.length(); 

इसके विपरीत, valueOf एक वस्तु पर काम नहीं कर सकता; इसके अलावा, यह एक नई वस्तु जब कहा जाता है बनाता है:

String x = String.valueOf(123.45); 

नोट कैसे उदाहरण के तरीकों, <objectName> एक डॉट . के बाद का उपयोग कर कहा जाता है जबकि स्थिर तरीकों <className> एक डॉट . के बाद का उपयोग करके पहुँचा रहे हैं।

6

'स्थिर' कीवर्ड क्योंकि सी, जहाँ से यह जन्म में, यह कई अर्थ हैं भ्रामक हो सकते हैं। जब किसी फ़ंक्शन में चर को घोषित करने के लिए उपयोग किया जाता है, तो इसका मतलब है कि चर के पास फ़ंक्शन के बाहर जीवन भर होता है। यह अनिवार्य रूप से एक वैश्विक है जो समारोह के लिए निजी है। यदि वैश्विक चर स्थिर है, तो यह उस स्रोत फ़ाइल के लिए अनिवार्य रूप से निजी है। दोनों स्थितियों में, वैरिएबल में एक वैश्विक स्मृति की तरह एक एकल स्मृति स्थान होता है। यह सिर्फ इतना है कि संकलक आपको फ़ंक्शन या संकलन इकाई के बाहर या तो इसे एक्सेस करने से रोकता है।

मुझे लगता है कि एक स्थैतिक चर के स्थान के रूप में 'स्थैतिक' शब्द का उपयोग कभी भी नहीं किया जाता है, जो एक सामान्य स्थानीय चर के विपरीत होता है, जिसमें ढेर पर कहीं भी स्मृति स्थान होता है, जिस पर स्टैक दिखता है समारोह कहा जाता था।

जब सी ++ बनाया गया था, इस कीवर्ड वर्ग स्तर के गुण और तरीकों का उल्लेख करने के लिए पुनः प्रयोजन गया। मुझे लगता है कि सोच यह थी कि एक स्थिर विधि या संपत्ति एक प्रकार का वैश्विक था जो वर्ग के लिए निजी था। यदि आप सोचते हैं कि इन्हें स्मृति में कैसे रखा गया है, तो यह एक निश्चित प्रकार की समझ में आता है क्योंकि स्थैतिक संपत्ति के पास वैश्विक चर की तरह एक ही पता होना होगा। केवल अंतर यह है कि संकलक आपको कक्षा के बाहर इसका उपयोग करने की अनुमति नहीं देता है।

चूंकि जावा (और अन्य भाषाओं) में सी ++ द्वारा प्रेरित वाक्यविन्यास था, इसलिए क्लास विधियों और गुणों का संदर्भ देने के लिए 'स्थिर' का उपयोग करके वहां भी उपयोग किया जाता है। यह दुर्भाग्यपूर्ण है, क्योंकि इस कीवर्ड का उपयोग अंग्रेजी अर्थ से थोड़ा सा संबंध है।

लेकिन आम तौर पर, यह देखने का तरीका है। ज्यादातर भाषाओं में, यदि यह 'स्थैतिक' है, तो पूरे कार्यक्रम में उनमें से केवल एक ही है। इसे एक एकल, निश्चित स्मृति पते के साथ कुछ के रूप में सोचें।

1

स्थैतिक चर एक वर्ग के सभी उदाहरणों द्वारा उपयोग किया जाता है, जहां सामान्य चर के रूप में चर को फिर से शुरू किया जाता है। स्टेटिक विधियों को ऑब्जेक्ट बनाने के बिना उन्हें कॉल करने का महत्व हो सकता है।

1

मैं स्थिर तरीकों को स्पष्ट रूप से समझने के लिए उदाहरण दिखाऊंगा।

कुंजीपटल जावा से डेटा दर्ज स्कैनर वर्ग

पूर्व का उपयोग करता है; स्कैनर एसएनएन = नया स्कैनर (System.in); int a = scn.nextInt();

तो इसका मतलब है कि nextInt() विधि स्थिर नहीं है।

स्टेटिक विधि वह तरीका है जिसका उपयोग किसी वर्ग को तत्काल किए बिना किया जा सकता है। निम्नलिखित उदाहरण को

देखो:

public class Calculate { 

    static void calculatePower(int num, int pow) { 
     System.out.println(Math.pow(num, pow)); 
    } 


} 

स्थिर विधि का उपयोग।

public static void main(String[] args) { 
    Calculate.calculatePower(2,8); 
} 

तो हम गणना वर्ग और इस्तेमाल किया calculatePower विधि है जो स्थिर है

संबंधित मुद्दे