वास्तव में इस जावा कोड में अंडरस्कोर क्या कर रहा है? [बन्द है]


81

मैंने अभी जावा सीखना शुरू किया।

मेरे दोस्त जो मुझे पढ़ाई में मदद कर रहे हैं, उन्होंने मुझे यह भेजा और कहा कि यह पता लगाओ।

दुर्भाग्य से मैं इसे पढ़ने में असमर्थ हूं। यह मुझे पर्ल जैसा लगता है।

class _{_ _;_(){_=this;}}

इसका क्या मतलब है?


17
इस सवाल पर मेटा पर चर्चा की जा रही है । आइए इसे बंद करने / हटाने के लिए या इसके खिलाफ तर्क दें।
एडम लेअर

63
@anotherordinary शायद आपको अपने दोस्त को एक प्रोग्रामिंग टीचर के रूप में खोदना चाहिए यदि उसने सोचा था कि वह आपको यह पता लगाने के लिए कह रही है कि यह भाषा सीखने का एक अच्छा तरीका होगा। अपरिवर्तनीय सामान्य ज्ञान याद रखना बिल्कुल भी उपयोगी नहीं है। बहुत कम जब आप एक भाषा सीखना शुरू कर रहे हैं।
एन्नो शियोजी

2
@EnnoShioji ग्रेट पॉइंट। "अप्रासंगिक"। माफ़ करना।
असद सईदुद्दीन

1
क्या कोई "IOJCC" बनाने की कोशिश कर रहा है? (Google "IOCCC")
ओलिवियर

1
@EnnoShioji यह "अप्रासंगिक सामान्य ज्ञान" कैसे याद रखने की आवश्यकता है? कोई भी जो खुद को जावा प्रोग्रामर कहता है, उसे आसानी से समझने में सक्षम होना चाहिए।
प्रेत ०१

जवाबों:


154

_वर्ग का नाम है। यह बहुत भ्रामक है, लेकिन यह काम करता है!

वर्ग के नाम के साथ:

class Something {Something something;Something(){something=this;}}

और साफ किया:

class Something {
    Something something;
    Something() {
        something=this;
    }
}

और आप इस अजीब नामकरण के साथ पागल हो सकते हैं :)

class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__=___;}}

वास्तव में, यूनिकोड भी समर्थित है, इसलिए यह मान्य है:

class 合法類別名稱{合法類別名稱(){}}

29
मैं व्यक्तिगत रूप से @ एल्विन के संपादन :) से प्यार करता हूँ
बार्टेक बानचेविज़

4
आपके get crazyउदाहरण में कुछ गलतियाँ हैं । (1) आप ____=__(दो बार) के बाद अर्धविराम जोड़ना भूल गए , यदि आप अधिभार _विधि की कोशिश कर रहे हैं तो आपको भी टाइप पास _(___)करना होगा _(_ ___)। यहाँ है कि यह कैसे दिख सकता है class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__ = ___;}}। एक मिनट रुकिए। क्या मैंने सिर्फ अंडरस्कोर डिबग किया था? यह ब्रेक का समय है।
Pshemo

@Phemo योग्य, मुझे वास्तव में उस कोड के बारे में गंभीर होने का कोई मतलब नहीं था: P फिक्स्ड
tckmn

मेरे उत्तर पर टिप्पणी के लिए +1 प्राप्त करें। आपको पुरस्कृत करने का दूसरा तरीका नहीं सोच सकता था।
एड हील

71

_ वर्ग का नाम है, अंडरस्कोर एक मान्य जावा वैरिएबल नाम है, आपको बस अपना कोड इंडेंट करने की आवश्यकता है:

class _{
    _ _;
    _(){
     _=this;
   }
}

पसंद:

class A{
    A A;
    A(){
     A=this;
   }
}

संपादित करें: @Daniel फिशर के लिए धन्यवाद

प्रकार नाम और चर नाम अलग नामस्थान हैं। और उदाहरण के लिए कोड class FOO { FOO FOO; }जावा में मान्य है।

सारांश

  • _ एक वर्ग का नाम है जैसे पर class _{
  • _एक वर्ग के सदस्य का नाम है जैसे पर _ _;और_=this
  • _ एक निर्माता का नाम है जैसे _()

याद रखें: जावा छह अलग-अलग नामस्थानों का उपयोग करता है :

  • पैकेज के नाम,
  • नाम टाइप करें,
  • फ़ील्ड (चर) नाम,
  • विधि के नाम,
  • स्थानीय चर नाम (मापदंडों सहित), और
  • लेबल।

इसके अलावा, प्रत्येक घोषित एनम का अपना नाम स्थान है। विभिन्न प्रकार के पहचान के नाम संघर्ष नहीं करते हैं; उदाहरण के लिए, एक विधि को स्थानीय चर के समान नाम दिया जा सकता है


3
कोई गलती नहीं है। यह ठीक है जैसे मैंने टाइप किया। मैं अभी तक इसे समझ नहीं पाया था।
एक और साधारण

2
@GrijeshChauhan प्रकार के नाम और परिवर्तनशील नामों के अलग-अलग नामस्थान हैं। class FOO { FOO FOO; }काम करता है।
डैनियल फिशर

1
हास्केल में, उदाहरण के लिए, प्रकार और मूल्यों के अलग-अलग नामस्थान भी हैं। एक अंतर यह है कि मामले का अर्थ है, एक प्रकार का नाम ऊपरी मामले के अक्षर से शुरू होना चाहिए, इसलिए आप किसी भी पुराने मान को एक प्रकार की तरह नाम नहीं दे सकते हैं, लेकिन केवल निर्माता हैं, लेकिन data Foo = Foo | Bar Intकाम करता है। यह केवल काम कर सकता है, निश्चित रूप से, उन भाषाओं में जहां आप एक पहचानकर्ता की श्रेणी का पता लगा सकते हैं जहां से यह प्रकट होता है।
डैनियल फिशर

2
@anotherordinary ने मेरा अद्यतन उत्तर पढ़ा मैंने एक लिंक भी जोड़ा
Grijesh Chauhan

2
@ बृजेशचौहान मैं इसे देखता हूं। धन्यवाद :)
एक और साधारण

12

अच्छा यह अच्छा उदाहरण है। जावा यूनिकोड को पहचानकर्ता बनाने की अनुमति देता है ताकि आप कुछ लिख सकें:

classlass {
ⲥlass claѕѕ;
}

यहाँ कक्षा का नाम 'ⲥ' (U + 2CA5 COPTIC SMALL LETTER SIMA) और है

ऑब्जेक्ट नाम का 'name' (U + 0455 CYRILLIC SMALL LETTER DZE)।


आपके पास नाम का एक चर नहीं है class, यह एक खोजशब्द है।
निक

14
@nickb: यह जावा कीवर्ड नहीं है 'class'। जैसा कि मैंने उल्लेख किया है कि ऑब्जेक्ट नाम 'claѕѕ'है 'ss'जो गैर ASCII वर्ण हैं। इसलिए वास्तव में ऑब्जेक्ट का नाम claѕѕहै cla\u0455\u0455'मुझे लगता है कि यह गलतफहमी को दूर करता है। :)
ashgkwd
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.