software - java download for windows 7 64 bit



जावा में वैश्विक चर (13)

जावा में ग्लोबल वेरिएबल्स को आप कैसे परिभाषित करते हैं?


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

public class Add {
    static int a;
    static int b; 
    static int c;

    public static void main(String arg[]) {
        c=sum();
        System.out.println("Sum is: "+c); 
    }

    static int sum() {
       a=20;
       b=30;
       return a+b;   
    }
}

Output: Sum is: 50

इसके अलावा आवृत्ति चर से पहले स्थिर कीवर्ड का उपयोग करने से हम बार-बार समान चर के लिए डेटाटाइप निर्दिष्ट नहीं कर सकते हैं। बस चर वैरिएबल लिखें।


आप नहीं करते यह डिजाइन द्वारा है। यदि आप कर सकते हैं तो आपको यह नहीं करना चाहिए।

ऐसा कहा जा रहा है कि आप ग्लोबल्स नामक कक्षा में सार्वजनिक स्थैतिक सदस्यों का एक सेट बना सकते हैं।

public class Globals {
   public static int globalInt = 0;
   ///
}

लेकिन आपको वास्तव में नहीं करना चाहिए :)। गंभीरता से .. ऐसा मत करो।


आम तौर पर वैश्विक परिवर्तनीय (मुझे लगता है कि आप इसे सी, सीपीपी के साथ तुलना कर रहे हैं) public static final रूप में परिभाषित करते हैं

पसंद

class GlobalConstant{
    public static final String CODE  = "cd";
}

ऐसे परिदृश्य में ईएनएन भी उपयोगी हैं:

उदाहरण Calendar.JANUARY लिए। जनवरी)


एक और तरीका इस तरह एक इंटरफ़ेस बनाना है:

public interface GlobalConstants
{
  String name = "Chilly Billy";
  String address = "10 Chicken head Lane";
}

किसी भी वर्ग जिसे उन्हें उपयोग करने की आवश्यकता है केवल इंटरफेस को लागू करना है:

public class GlobalImpl implements GlobalConstants
{
  public GlobalImpl()
  {
     System.out.println(name);
  }
}

एक, जावा में कोई वैश्विक चर नहीं है

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


ग्लोबल वैरिएबल को परिभाषित करने के लिए आप स्थिर कुंजीशब्द का उपयोग कर सकते हैं

public class Example {
    public static int a;
    public static int b;
}

अब आप कॉल करके कहीं से भी ए और बी तक पहुंच सकते हैं

Example.a;

Example.b;

जावा में कोई वैश्विक चर नहीं है, लेकिन सार्वजनिक क्षेत्रों के साथ वैश्विक वर्ग हैं। आप वैश्विक चर की तरह दिखने के लिए जावा 5 की स्थिर आयात सुविधा का उपयोग कर सकते हैं।


जावा में वास्तव में वैश्विक चर जैसी कोई चीज़ नहीं है। प्रत्येक स्थैतिक चर कुछ वर्ग (जैसे System.out) से संबंधित होना चाहिए, लेकिन जब आपने यह तय किया है कि यह किस वर्ग में जाएगा, तो आप इसे उसी क्लासलोडर द्वारा लोड किए गए हर जगह से संदर्भित कर सकते हैं।

ध्यान दें कि दौड़ की स्थिति से बचने के लिए अद्यतन करते समय स्थिर चर हमेशा सुरक्षित रहना चाहिए।


बहुत सारे अच्छे उत्तर, लेकिन मैं इस उदाहरण को देना चाहता हूं क्योंकि इसे गेटर्स और सेटर्स का उपयोग करके किसी वर्ग द्वारा कक्षा के चरों तक पहुंचने का अधिक उचित तरीका माना जाता है। वेरिएबल और सेटर्स का उपयोग करने का कारण इस प्रकार है कि वे चरम सार्वजनिक बनाने के बजाए इस प्रकार हैं। आइए कहें कि आपका var वैश्विक पैरामीटर होने जा रहा है जिसे आप कभी भी अपने प्रोग्राम के निष्पादन के दौरान किसी को बदलना नहीं चाहते हैं (यदि आप किसी टीम के साथ कोड विकसित कर रहे हैं), तो वेबसाइट की तरह कुछ ऐसा हो सकता है। सिद्धांत रूप में यह बदल सकता है और आपके प्रोग्राम में कई बार इस्तेमाल किया जा सकता है, इसलिए आप इसे एक बार में अपडेट करने में सक्षम होने के लिए एक वैश्विक var का उपयोग करना चाहते हैं। लेकिन आप नहीं चाहते कि कोई और अंदर जाए और इस var को बदल दें (संभवतः यह महसूस किए बिना कि यह कितना महत्वपूर्ण है)। उस स्थिति में आप बस एक सेटर विधि शामिल नहीं करते हैं, और केवल गेटर विधि शामिल करते हैं।

public class Global{
    private static int var = 5;

    public static int getVar(){
        return this.var;
    }

    //If you do not want to change the var ever then do not include this
    public static void setVar(int var){
        this.var = var;
    }
}

वास्तव में एक जावा ओओ कार्यक्रम में "ग्लोबल" की अवधारणा नहीं है

फिर भी आपके प्रश्न के पीछे कुछ सच्चाई है क्योंकि कुछ ऐसे मामले होंगे जहां आप कार्यक्रम के किसी भी हिस्से में एक विधि चलाने के लिए चाहते हैं। उदाहरण के लिए - वाक्यांश-ओ-मैटिक ऐप में यादृच्छिक () विधि; यह एक विधि है जो किसी भी प्रोग्राम से कॉल करने योग्य होनी चाहिए।

तो ऊपर की तरह चीजों को पूरा करने के लिए "हमें ग्लोबल-जैसी चर और विधियों की आवश्यकता है"

ग्लोबल के रूप में एक वैरिएबल घोषित करने के लिए।

 1.Mark the variable as public static final While declaring.

ग्लोबल के रूप में एक विधि घोषित करने के लिए

 1. Mark the method as public static While declaring.

क्योंकि मैंने वैश्विक वैरिएबल और विधि को स्थिर के रूप में घोषित किया है, इसलिए आप उन्हें निम्नलिखित कोड की सहायता से कहीं भी चाह सकते हैं

ClassName.X

नोट : एक्स आवश्यकता के अनुसार या तो विधि का नाम या परिवर्तनीय नाम हो सकता है और क्लासनाम उस वर्ग का नाम है जिसमें आपने उन्हें घोषित किया था।


स्थिरांक को छोड़कर, कुछ भी वैश्विक नहीं होना चाहिए।

public class MyMainClass {
    public final static boolean DEBUGMODE=true;
}

इसे अपने मुख्य वर्ग में रखें। अन्य .java फ़ाइलों में, इसका उपयोग करें:

if(MyMainClass.DEBUGMODE) System.out.println("Some debugging info");

सुनिश्चित करें कि जब आप अपने कोड को काटने वाले कमरे के तल से हटाते हैं और रिलीज में जाते हैं तो आप इस कार्यक्षमता को हटा देते हैं या टिप्पणी करते हैं।

यदि आपके पास वर्कहोर विधि है, जैसे कि यादृच्छिकता, तो मैं एक "टूलबॉक्स" पैकेज बनाने का सुझाव देता हूं! सभी कोडर में एक होना चाहिए, फिर जब भी आप इसे .java में उपयोग करना चाहते हैं, बस इसे आयात करें!


// Get the access of global while retaining priveleges.
// You can access variables in one class from another, with provisions.
// The primitive must be protected or no modifier (seen in example).

// the first class
public class farm{

  int eggs; // an integer to be set by constructor
  fox afox; // declaration of a fox object

  // the constructor inits
  farm(){
    eggs = 4;
    afox = new fox(); // an instance of a fox object

    // show count of eggs before the fox arrives
    System.out.println("Count of eggs before: " + eggs);

    // call class fox, afox method, pass myFarm as a reference
    afox.stealEgg(this);

    // show the farm class, myFarm, primitive value
    System.out.println("Count of eggs after : " + eggs);

  } // end constructor

  public static void main(String[] args){

    // instance of a farm class object
    farm myFarm = new farm();

  }; // end main

} // end class

// the second class
public class fox{

  // theFarm is the myFarm object instance
  // any public, protected, or "no modifier" variable is accessible
  void stealEgg(farm theFarm){ --theFarm.eggs; }

} // end class

public class GlobalImpl {   

 public static int global = 5;

}

आप कहीं भी कॉल कर सकते हैं:

GlobalImpl.global // 5




java