2011-09-20 16 views
46

हाल ही में मैंने पढ़ा है कि जावा वैरिएबल नामों में साइन $ की अनुमति है, लेकिन इसका एक विशेष अर्थ है। दुर्भाग्य से यह उल्लेख नहीं किया गया है कि यह विशेष अर्थ क्या है।

इसलिए मैं यहां पूछता हूं: जावा में परिवर्तनीय नामों में $ का विशेष अर्थ क्या है?

यहाँ से

जावा सटीक उद्धरण है: समस्या को सुलझाने के लिए एक परिचय और

वॉल्टर सविच से

प्रोग्रामिंग:

जावा के लिए डॉलर चिह्न प्रतीक $ समर्थ बनाता है, एक पहचानकर्ता, में दिखाई दें लेकिन इन पहचानकर्ताओं का एक विशेष अर्थ है, इसलिए आपको का उपयोग अपनी पहचान में $ प्रतीक का उपयोग नहीं करना चाहिए रु।

+0

संबंधित धागा:।। Http://stackoverflow.com/questions/6167326/java-class-name-containing-dollar-sign – adatapost

+0

हवाला देते हुए तुम कहाँ पढ़ा यह अच्छा हो सकता है –

+0

मैं प्रश्न संपादित करें। –

उत्तर

43

$ कुछ नामों को सजाने के लिए संकलक द्वारा आंतरिक रूप से उपयोग किया जाता है। विकिपीडिया gives the following example:

public class foo { 
    class bar { 
     public int x; 
    } 

    public void zark() { 
     Object f = new Object() { 
      public String toString() { 
       return "hello"; 
      } 
     }; 
    } 
} 

इस कार्यक्रम तीन .class फ़ाइलों का उत्पादन करेगा संकलन:

  • foo.class, नामित भीतरी वर्ग foo.bar
  • युक्त, मुख्य (बाह्य) वर्ग foo
  • foo$bar.class युक्त
  • foo$1.class, जिसमें अज्ञात आंतरिक वर्ग (स्थानीय से मेथो घ foo.zark)

इन वर्ग नामों में से सभी वैध (के रूप में $ प्रतीकों JVM विनिर्देश में अनुमति दी जाती है)।

एक समान नस में, javac [उद्धरण के अंत] कुछ स्वचालित रूप से बना चर नाम में $ उपयोग करता है: उदाहरण के लिए, this$0 एट अल निहित this के भीतरी वर्गों से संदर्भ के लिए उपयोग किया जाता है उनके बाहरी कक्षाएं

अंत में

, the JLS recommends the following:

$ चरित्र विरासत प्रणालियों पर पहले से मौजूद नामों का उपयोग करने के लिए, केवल यंत्रवत् उत्पन्न स्रोत कोड या, शायद ही कभी में किया जाना चाहिए।

+0

यह वास्तव में सच नहीं है। मैं अपने क्लास टेस्ट $ – RoflcoptrException

+3

का नाम दे सकता हूं प्रश्न यह है कि कक्षा के नामों के लिए सवाल नहीं पूछ रहा है, लेकिन var के लिए iables। –

31

वहाँ no special meaning for it है:

"चर नाम केस संवेदी होते हैं एक वेरिएबल का नाम किसी भी कानूनी पहचानकर्ता हो सकता है - यूनिकोड अक्षर और अंक की एक असीमित-लंबाई अनुक्रम, अक्षरों से शुरू होने,। डॉलर का चिह्न "$", या अंडरस्कोर वर्ण "_"। हालांकि, सम्मेलन हमेशा आपके चर नामों को एक पत्र के साथ शुरू करना है, न कि "$" या "_"।इसके अतिरिक्त, सम्मेलन द्वारा डॉलर चिह्न चरित्र का कभी भी उपयोग नहीं किया जाता है। आपको कुछ स्थितियां मिल सकती हैं जहां ऑटो-जेनरेट किए गए नामों में डॉलर का चिह्न होगा, लेकिन आपके चर नामों को हमेशा इसका उपयोग करने से बचना चाहिए। अंडरस्कोर चरित्र के लिए एक समान सम्मेलन मौजूद है; जबकि यह आपके चर के नाम को "_" से शुरू करने के लिए तकनीकी रूप से कानूनी है, यह अभ्यास निराश है। व्हाइट अंतरिक्ष की अनुमति नहीं है "

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