Java में Static Class, Block, Methods और Variables

Static Keyword का उपयोग class, variable, method और block के साथ किया जा सकता है| static members किसी विशेष instance की बजाय class से समन्धित होते है, इसका मतलब है कि यदि आप किसी member को static बनाते है, तो आप इसे object के बिना एक्सेस कर सकते है| आइये इसे समझने के लिए एक उदाहरण लेते है :-

Static Method

यहाँ हमारे पास एक static method myMethod() है, हम बिना किसी object के इस method को call कर सकते है| यदि हम static keyword को हटाते है और इसे non-static बनाते है तो हमे इसे call करने के लिए class का एक object बनाना होगा|

Static member class के सभी instances के लिए सामान्य है, लेकिन non-static member class के प्रत्येक उदाहरण के लिए अलग-अलग है|
class SimpleStaticExample
{
// This is a static method
static void myMethod()
{
System.out.println(“myMethod”);
}

public static void main(String[] args)
{
/* You can see that we are calling this
* method without creating any object.
*/
myMethod();
}
}

परिणाम (Output):
myMethod

Static Block

Static block का उपयोग static variable को इनिशियलाइज़ करने के लिए किया जाता है मेमोरी में class load होने पर यह block निष्पादित (execute) हो जाता है| एक class में कई static ब्लॉक हो सकते है, जो उसी क्रम में निष्पादित(execute) होगे जिसमे उन्हें program में लिखा गया है|


उदाहरण 1:- single static block
जैसा कि आप देख सकते है कि दोनों static variable को main method में access करने से पहले इन्हें इनिशियलाइज़ किया गया है|

class JavaExample{
static int num;
static String mystr;
static{
num = 97;
mystr = “Static keyword in Java”;
}
public static void main(String args[])
{
System.out.println(“Value of num: “+num);
System.out.println(“Value of mystr: “+mystr);
}
}

परिणाम (Output):
Value of num: 97
Value of mystr: Static keyword in Java

Multiple Static block

चलिए देखते है कि java में कितने static block काम करते है| वे एक विशेष क्रम में निष्पादित (execute) होते है –

सबसे पहले पहला static block निष्पादित (execute ) होता है इसके बाद दूसरा static block निष्पादित (execute) होता है, यही कारण है की पहले block द्वारा इनिशियलाइज़ किये गए मान को दूसरे ब्लॉक द्वारा ओवराइट किया गया है|

class JavaExample2{
static int num;
static String mystr;
//First Static block
static{
System.out.println(“Static Block 1”);
num = 68;
mystr = “Block1”;
}
//Second static block
static{
System.out.println(“Static Block 2”);
num = 98;
mystr = “Block2”;
}
public static void main(String args[])
{
System.out.println(“Value of num: “+num);
System.out.println(“Value of mystr: “+mystr);
}
}


परिणाम (Output):
Static Block 1
Static Block 2
Value of num: 98
Value of mystr: Block2

Static Variable

एक static variable class के सभी instances के लिए सामान्य है क्योकि static variable, class level के variable होते है| दूसरे शब्दों में कह सकते है कि static variable की केवल एक ही प्रति बनाई जाती है और class के सभी instances के बीच साझा की जाती है| इस तरह के variable के लिए मेमोरी आवंटन (memory allocation ) केवल एक बार होता है जब class को मेमोरी में load किया जाता है|

कुछ महत्वपूर्ण बिंदु :-

  • Static variable को class variable के रूप में भी जाना जाता है|
  • Non-static variable के विपरीत इस तरह के variable को सीधे static और non-static तरीको से access किया जा सकता है|

उदाहरण 1

static variable को सीधे static method से access किया जा सकता है यहाँ हमारे पास एक static method disp() और दो static variable var1 और var2 है|

class JavaExample3{
static int var1;
static String var2;
//This is a Static Method
static void disp(){
System.out.println(“Var1 is: “+var1);
System.out.println(“Var2 is: “+var2);
}
public static void main(String args[])
{
disp();
}
}
परिणाम (Output):
Var1 is: 0
Var2 is: null

उदाहरण 2 :

Static Variable class के सभी instances के बीच सांझा किये जाते है| इस उदाहरण में string variable non-static है और integer variable static है| जैसा कि आप output में देख सकते है कि non-static variable दोनों ऑब्जेक्ट्स के लिए अलग-अलग है लेकिन static variable को आपस में साझा (share) किया जाता है, यही कारण है की object obj2 द्वारा static variable में किये गए बदलाव दोनों object को प्रभावित करेगे|

class JavaExample{
//Static integer variable
static int var1=77;
//non-static string variable
String var2;

public static void main(String args[])
{
JavaExample ob1 = new JavaExample();
JavaExample ob2 = new JavaExample();
//Assigning the value to static variable using object ob1
ob1.var1=88;
ob1.var2=”I’m Object1″;
ob2.var1=99;
ob2.var2=”I’m Object2″;
System.out.println(“ob1 integer:”+ob1.var1);
System.out.println(“ob1 String:”+ob1.var2);
System.out.println(“ob2 integer:”+ob2.var1);
System.out.println(“ob2 STring:”+ob2.var2);
}
}

परिणाम (Output):
ob1 integer:99
ob1 String:I’m Object1
ob2 integer:99
ob2 STring:I’m Object2

Static method

Static methods के द्वारा class variables (static variables) को class के ऑब्जेक्ट्स का उपयोग किये बिना access किया जा सकता है, जबकि non-static methods और non-static variables को class के object का उपयोग करके access किया जाता है|static methods को सीधे static और non-static मेथोड्स के द्वारा access किया जा सकता है|

syntax:
static return_type method_name();

उदाहरण 1

दिए गए उदाहरण में static method main() बिना object का उपयोग किये static variable को access कर रहा है|

class JavaExample{
static int i = 10;
static String s = “ComputerHindiNotes”;
//This is a static method
public static void main(String args[])
{
System.out.println(“i:”+i);
System.out.println(“s:”+s);
}
}
परिणाम (Output):
i:10
s:ComputerHindiNotes

उदाहरण 2

दिए गए उदाहरण में static method को static और non-static method में access किया गया है|

class JavaExample{
static int i = 100;
static String s = “ComputerHindiNotes”;
//Static method
static void display()
{
System.out.println(“i:”+i);
System.out.println(“i:”+s);
}

//non-static method
void funcn()
{
//Static method called in non-static method
display();
}
//static method
public static void main(String args[])
{
JavaExample obj = new JavaExample();
//You need to have object to call this non-static method
obj.funcn();

//Static method called in another static method
display();
}
}

परिणाम (Output):
i:100
i:ComputerHindiNotes
i:100
i:ComputerHindiNotes

Static class

  1. एक class को तभी static बनाया जा सकता है जब वह एक nested class हो|
  2. nested static class को किसी अन्य class के refrence की आवश्यकता नहीं होती|
  3. एक static class अन्य class के non-static members को access नहीं कर सकता|

उदाहरण : Static class

class JavaExample{
private static String str = “ComputerHindiNotes”;

//Static class
static class MyNestedClass{
//non-static method
public void disp() {

System.out.println(str);
}

}
public static void main(String args[])
{
JavaExample.MyNestedClass obj = new JavaExample.MyNestedClass();
obj.disp();
}
}
परिणाम (Output) :
ComputerHindiNotes

error: Content is protected !!