जावा - तरीके

जावा विधि उन बयानों का एक संग्रह है जो एक ऑपरेशन करने के लिए एक साथ समूहीकृत किए जाते हैं। जब आप System.out को कॉल करते हैं।println() विधि, उदाहरण के लिए, सिस्टम वास्तव में कंसोल पर एक संदेश प्रदर्शित करने के लिए कई कथनों को निष्पादित करता है।

अब आप सीखेंगे कि रिटर्न मानों के साथ या बिना अपने स्वयं के तरीके कैसे बनाएं, मापदंडों के साथ या बिना एक विधि को लागू करें, और प्रोग्राम डिजाइन में विधि अमूर्त लागू करें।

बनाने की विधि

विधि के वाक्य रचना को समझाने के लिए निम्नलिखित उदाहरण पर विचार करें -

Syntax

public static int methodName(int a, int b) {
   // body
}

यहाँ,

  • public static - संशोधक

  • int - वापसी प्रकार

  • methodName - विधि का नाम

  • a, b - औपचारिक पैरामीटर

  • int a, int b - मापदंडों की सूची

विधि परिभाषा में एक विधि शीर्ष लेख और एक विधि निकाय शामिल हैं। इसे निम्नलिखित सिंटैक्स में दिखाया गया है -

Syntax

modifier returnType nameOfMethod (Parameter List) {
   // method body
}

ऊपर दिखाए गए सिंटैक्स में शामिल हैं -

  • modifier - यह विधि के एक्सेस प्रकार को परिभाषित करता है और यह उपयोग करने के लिए वैकल्पिक है।

  • returnType - विधि एक मान लौटा सकती है।

  • nameOfMethod- यह विधि का नाम है। विधि हस्ताक्षर विधि नाम और पैरामीटर सूची के होते हैं।

  • Parameter List- मापदंडों की सूची, यह एक विधि के मापदंडों का प्रकार, क्रम और संख्या है। ये वैकल्पिक हैं, विधि में शून्य पैरामीटर हो सकते हैं।

  • method body - विधि शरीर परिभाषित करता है कि विधि कथनों के साथ क्या करती है।

Example

यहाँ उपरोक्त परिभाषित विधि का स्रोत कोड कहा जाता है min()। इस विधि में दो पैरामीटर num1 और num2 हैं और दोनों के बीच अधिकतम रिटर्न देता है -

/** the snippet returns the minimum between two numbers */

public static int minFunction(int n1, int n2) {
   int min;
   if (n1 > n2)
      min = n2;
   else
      min = n1;

   return min; 
}

विधि कॉलिंग

एक विधि का उपयोग करने के लिए, इसे बुलाया जाना चाहिए। दो तरीके हैं जिनमें एक विधि को कहा जाता है, अर्थात विधि एक मान लौटाती है या कुछ नहीं लौटाती है (कोई वापसी मान नहीं)।

मेथड कॉलिंग की प्रक्रिया सरल है। जब कोई प्रोग्राम किसी विधि को लागू करता है, तो प्रोग्राम नियंत्रण को तथाकथित विधि में स्थानांतरित किया जाता है। यह विधि तब दो स्थितियों में कॉलर को नियंत्रण लौटाती है, जब -

  • रिटर्न स्टेटमेंट निष्पादित किया जाता है।
  • यह समापन ब्रेस को समाप्त करने की विधि तक पहुंचता है।

शून्य लौटाने के तरीकों को एक बयान के लिए कॉल माना जाता है। आइए एक उदाहरण पर विचार करें -

System.out.println("This is tutorialspoint.com!");

निम्न रिटर्न विधि को निम्न उदाहरण से समझा जा सकता है -

int result = sum(6, 9);

एक विधि को परिभाषित करने और इसे कॉल करने के तरीके को प्रदर्शित करने के लिए निम्नलिखित उदाहरण है -

Example

public class ExampleMinNumber {
   
   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      int c = minFunction(a, b);
      System.out.println("Minimum Value = " + c);
   }

   /** returns the minimum of two numbers */
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

यह निम्नलिखित परिणाम का उत्पादन करेगा -

Output

Minimum value = 6

शून्य खोजशब्द

शून्य कीवर्ड हमें ऐसे तरीके बनाने की अनुमति देता है जो मान वापस नहीं करते हैं। इधर, निम्न उदाहरण में हम एक शून्य विधि पर विचार कर रहे methodRankPoints । यह विधि एक शून्य विधि है, जो किसी भी मूल्य को वापस नहीं करती है। एक शून्य विधि के लिए कॉल एक बयान यानी methodRankPoints (255.7) होना चाहिए ; । यह एक जावा स्टेटमेंट है जो अर्धविराम के साथ समाप्त होता है जैसा कि निम्नलिखित उदाहरण में दिखाया गया है।

Example

public class ExampleVoid {

   public static void main(String[] args) {
      methodRankPoints(255.7);
   }

   public static void methodRankPoints(double points) {
      if (points >= 202.5) {
         System.out.println("Rank:A1");
      }else if (points >= 122.4) {
         System.out.println("Rank:A2");
      }else {
         System.out.println("Rank:A3");
      }
   }
}

यह निम्नलिखित परिणाम का उत्पादन करेगा -

Output

Rank:A1

मान द्वारा पासिंग पैरामीटर्स

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

मान द्वारा पैरामीटर पारित करने का मतलब है एक पैरामीटर के साथ एक विधि को कॉल करना। इसके माध्यम से, तर्क मान को पैरामीटर में पास किया जाता है।

Example

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

public class swappingExample {

   public static void main(String[] args) {
      int a = 30;
      int b = 45;
      System.out.println("Before swapping, a = " + a + " and b = " + b);

      // Invoke the swap method
      swapFunction(a, b);
      System.out.println("\n**Now, Before and After swapping values will be same here**:");
      System.out.println("After swapping, a = " + a + " and b is " + b);
   }

   public static void swapFunction(int a, int b) {
      System.out.println("Before swapping(Inside), a = " + a + " b = " + b);
      
      // Swap n1 with n2
      int c = a;
      a = b;
      b = c;
      System.out.println("After swapping(Inside), a = " + a + " b = " + b);
   }
}

यह निम्नलिखित परिणाम का उत्पादन करेगा -

Output

Before swapping, a = 30 and b = 45
Before swapping(Inside), a = 30 b = 45
After swapping(Inside), a = 45 b = 30

**Now, Before and After swapping values will be same here**:
After swapping, a = 30 and b is 45

विधि ओवरलोडिंग

जब किसी वर्ग में एक ही नाम से दो या दो से अधिक विधियां होती हैं लेकिन अलग-अलग पैरामीटर होते हैं, तो इसे विधि अधिभार के रूप में जाना जाता है। यह ओवरराइडिंग से अलग है। ओवरराइडिंग में, एक विधि में एक ही विधि का नाम, प्रकार, मापदंडों की संख्या आदि होती है।

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

निम्नलिखित उदाहरण वही बताते हैं -

Example

public class ExampleOverloading {

   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      double c = 7.3;
      double d = 9.4;
      int result1 = minFunction(a, b);
      
      // same function name with different parameters
      double result2 = minFunction(c, d);
      System.out.println("Minimum Value = " + result1);
      System.out.println("Minimum Value = " + result2);
   }

   // for integer
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
   
   // for double
   public static double minFunction(double n1, double n2) {
     double min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

यह निम्नलिखित परिणाम का उत्पादन करेगा -

Output

Minimum Value = 6
Minimum Value = 7.3

ओवरलोडिंग के तरीके प्रोग्राम को पठनीय बनाते हैं। यहाँ, दो विधियाँ एक ही नाम से दी गई हैं, लेकिन विभिन्न मापदंडों के साथ। पूर्णांक और डबल प्रकार से न्यूनतम संख्या परिणाम है।

कमांड-लाइन तर्क का उपयोग करना

कभी-कभी जब आप इसे चलाते हैं तो आप किसी कार्यक्रम में कुछ जानकारी देना चाहते हैं। यह कमांड-लाइन तर्कों को मुख्य () में पास करके पूरा किया गया है।

एक कमांड-लाइन तर्क वह सूचना है जो कमांड लाइन पर प्रोग्राम के नाम का सीधा अनुसरण करती है जब इसे निष्पादित किया जाता है। जावा प्रोग्राम के अंदर कमांड लाइन के तर्कों को एक्सेस करना काफी आसान है। वे स्ट्रिंग सरणी में मुख्य () को पारित करने के रूप में संग्रहीत किए जाते हैं।

Example

निम्न प्रोग्राम सभी कमांड-लाइन तर्कों को प्रदर्शित करता है जिन्हें इसके साथ कहा जाता है -

public class CommandLine {

   public static void main(String args[]) { 
      for(int i = 0; i<args.length; i++) {
         System.out.println("args[" + i + "]: " +  args[i]);
      }
   }
}

इस कार्यक्रम को निष्पादित करने की कोशिश करें जैसा कि यहाँ दिखाया गया है -

$java CommandLine this is a command line 200 -100

यह निम्नलिखित परिणाम का उत्पादन करेगा -

Output

args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100

यह कीवर्ड

thisजावा में एक कीवर्ड है जो वर्तमान वर्ग की वस्तु के संदर्भ के रूप में प्रयोग किया जाता है, एक उदाहरण विधि या एक निर्माणकर्ता के साथ। का उपयोग करते हुए इस आप इस तरह के निर्माताओं, चर और तरीके के रूप में एक वर्ग के सदस्यों देख सकते हैं।

Note- कीवर्ड इस केवल उदाहरण तरीकों या कंस्ट्रक्टर्स के भीतर प्रयोग किया जाता है

सामान्य तौर पर, कीवर्ड इस के लिए प्रयोग किया जाता है -

  • यदि कंस्ट्रक्टर या किसी विधि के भीतर उनके समान नाम हैं, तो वे स्थानीय चर से उदाहरण चर को अलग करें।

class Student {
   int age;   
   Student(int age) {
      this.age = age;	
   }
}
  • एक वर्ग से एक प्रकार के कंस्ट्रक्टर (पैराड्राइज्ड कंस्ट्रक्टर या डिफ़ॉल्ट) को कॉल करें। इसे स्पष्ट निर्माता आह्वान के रूप में जाना जाता है।

class Student {
   int age
   Student() {
      this(20);
   }
   
   Student(int age) {
      this.age = age;	
   }
}

Example

यहां एक उदाहरण है जो इस कीवर्ड का उपयोग किसी वर्ग के सदस्यों तक पहुंचने के लिए करता है। नाम के साथ फ़ाइल में निम्न प्रोग्राम को कॉपी और पेस्ट करें,This_Example.java

public class This_Example {
   // Instance variable num
   int num = 10;
	
   This_Example() {
      System.out.println("This is an example program on keyword this");	
   }

   This_Example(int num) {
      // Invoking the default constructor
      this();
      
      // Assigning the local variable num to the instance variable num
      this.num = num;	   
   }
   
   public void greet() {
      System.out.println("Hi Welcome to Tutorialspoint");
   }
      
   public void print() {
      // Local variable num
      int num = 20;
      
      // Printing the local variable
      System.out.println("value of local variable num is : "+num);
      
      // Printing the instance variable
      System.out.println("value of instance variable num is : "+this.num);
      
      // Invoking the greet method of a class
      this.greet();     
   }
   
   public static void main(String[] args) {
      // Instantiating the class
      This_Example obj1 = new This_Example();
      
      // Invoking the print method
      obj1.print();
	  
      // Passing a new value to the num variable through parametrized constructor
      This_Example obj2 = new This_Example(30);
      
      // Invoking the print method again
      obj2.print(); 
   }
}

यह निम्नलिखित परिणाम का उत्पादन करेगा -

Output

This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 10
Hi Welcome to Tutorialspoint
This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 30
Hi Welcome to Tutorialspoint

परिवर्तनीय तर्क (var-args)

JDK 1.5 आपको एक प्रकार के तर्कों के चर संख्या को एक विधि में पारित करने में सक्षम बनाता है। विधि में पैरामीटर निम्नानुसार घोषित किया गया है -

typeName... parameterName

विधि घोषणा में, आप एक दीर्घवृत्त (...) के बाद का प्रकार निर्दिष्ट करते हैं। केवल एक चर-लंबाई पैरामीटर एक विधि में निर्दिष्ट किया जा सकता है, और यह पैरामीटर अंतिम पैरामीटर होना चाहिए। किसी भी नियमित पैरामीटर को इससे पहले होना चाहिए।

Example

public class VarargsDemo {

   public static void main(String args[]) {
      // Call method with variable args  
	   printMax(34, 3, 3, 2, 56.5);
      printMax(new double[]{1, 2, 3});
   }

   public static void printMax( double... numbers) {
      if (numbers.length == 0) {
         System.out.println("No argument passed");
         return;
      }

      double result = numbers[0];

      for (int i = 1; i <  numbers.length; i++)
      if (numbers[i] >  result)
      result = numbers[i];
      System.out.println("The max value is " + result);
   }
}

यह निम्नलिखित परिणाम का उत्पादन करेगा -

Output

The max value is 56.5
The max value is 3.0

अंतिम रूप () विधि

एक विधि को परिभाषित करना संभव है जिसे कचरा कलेक्टर द्वारा किसी वस्तु के अंतिम विनाश से ठीक पहले कहा जाएगा। इस विधि को कहा जाता हैfinalize( ), और इसका उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि कोई वस्तु साफ-साफ समाप्त हो।

उदाहरण के लिए, आप अंतिम रूप () का उपयोग यह सुनिश्चित करने के लिए कर सकते हैं कि उस वस्तु के स्वामित्व वाली एक खुली फ़ाइल बंद है।

किसी वर्ग में एक अंतिम रूप जोड़ने के लिए, आप बस अंतिम रूप () विधि को परिभाषित करते हैं। जावा रनटाइम उस विधि को कॉल करता है जब भी वह उस वर्ग के ऑब्जेक्ट को रीसायकल करने वाला होता है।

अंतिम रूप () विधि के अंदर, आप उन कार्यों को निर्दिष्ट करेंगे जो किसी वस्तु के नष्ट होने से पहले किए जाने चाहिए।

अंतिम रूप () विधि में यह सामान्य रूप है -

protected void finalize( ) {
   // finalization code here
}

यहां, संरक्षित कीवर्ड एक स्पेसिफिक है जो अपने वर्ग के बाहर परिभाषित कोड द्वारा अंतिम रूप देने () तक पहुंचने से रोकता है।

इसका मतलब यह है कि आपको पता नहीं चल सकता है कि अंतिम रूप दिया गया है या नहीं। उदाहरण के लिए, यदि कचरा संग्रहण होने से पहले आपका कार्यक्रम समाप्त हो जाता है, तो अंतिम रूप () निष्पादित नहीं होगा।