CodeGym /Java Blog /சீரற்ற /ஜாவா ஸ்கோப்
John Squirrels
நிலை 41
San Francisco

ஜாவா ஸ்கோப்

சீரற்ற குழுவில் வெளியிடப்பட்டது
நாடுகளுக்கு எல்லைகள் மற்றும் அவற்றின் சொந்த சட்டங்கள் உள்ளன என்பதை நாம் அனைவரும் அறிவோம். நாட்டின் சட்டங்கள் எல்லைக்குள் செயல்படுகின்றன. நாட்டில், எடுத்துக்காட்டாக, பள்ளிகள் அல்லது அருங்காட்சியகங்கள் போன்ற நிறுவனங்கள் உள்ளன, அவை அவற்றின் சொந்த உள்ளூர் விதிகளைக் கொண்டுள்ளன. அவை நாட்டின் சட்டங்களுக்கு முரணாக இல்லை, ஆனால் குறிப்பிட்ட அமைப்பின் கட்டமைப்பிற்குள் மட்டுமே செயல்படுகின்றன. நிரலாக்கத்திலும் இதுவே உண்மை. எனவே நிரலாக்கத்தில், குறிப்பாக ஜாவா மொழியில், "நோக்கம்" என்ற சொல் உள்ளது. மாறிகள் அல்லது முறைகள் போன்ற குறிப்பிட்ட தரவு செயல்படும் நிரலின் பகுதிகளை இது குறிக்கிறது. இந்த கட்டுரையில், ஜாவாவில் உள்ள மாறிகளுக்கு என்ன ஸ்கோப்கள் உள்ளன மற்றும் அவற்றை எவ்வாறு வரையறுப்பது என்பதைக் கண்டுபிடிக்கப் போகிறோம்.

பொதுவாக ஜாவா ஸ்கோப்

மாறிகள் மற்றும் முறைகளின் நோக்கங்களை ஏன் பிரிக்க வேண்டும்? உண்மை என்னவென்றால், சில நேரங்களில் நிரல்கள் மிகப் பெரியவை மற்றும் ஒன்று அல்லது மற்றொரு மாறியைக் கண்காணிப்பது கடினம். கூடுதலாக, பெரிய திட்டங்களில், மாறிகளின் தெளிவான பெயரிடுதல் விரும்பத்தக்கது, இதனால் அவை எதற்காக என்று தெளிவாகத் தெரியும். நிரலின் வெவ்வேறு பகுதிகளில் ஒரே பெயரில் வெவ்வேறு மாறிகளை வைத்திருக்க ஸ்கோப் உங்களை அனுமதிக்கிறது. அத்தகைய குறியீடு பராமரிக்க மற்றும் படிக்க எளிதானது. ஒரு நிரலில் ஒரு குறிப்பிட்ட மாறி அல்லது முறை அணுகக்கூடிய இடத்தை ஜாவா ஸ்கோப் வரையறுக்கிறது. சுருக்கமாக:
  • ஒரு முறையில் அறிவிக்கப்பட்ட ஒரு மாறி, அறிவிப்பின் தொடக்கத்திலிருந்து முறையின் முடிவு வரை (முறை நோக்கம்) தெரியும்.
  • குறியீடு தொகுதியில் அறிவிக்கப்பட்ட ஒரு மாறி அந்த குறியீடு தொகுதியின் இறுதி வரை இருக்கும்.
  • முறை வாதங்களாக இருக்கும் மாறிகள் முறையின் இறுதி வரை இருக்கும்.
  • வர்க்கம்/பொருள் மாறிகள் கொண்டிருக்கும் பொருளின் வாழ்நாள் முழுவதும் இருக்கும். அவற்றின் தெரிவுநிலை சிறப்பு அணுகல் மாற்றிகளால் கட்டுப்படுத்தப்படுகிறது.
  • நிரல் இயங்கும் எல்லா நேரங்களிலும் நிலையான வகுப்பு மாறிகள் இருக்கும். அவற்றின் தெரிவுநிலையும் அணுகல் மாற்றிகளால் தீர்மானிக்கப்படுகிறது.

முறை நிலை நோக்கம்

வாதங்கள் உட்பட ஒரு முறையில் அறிவிக்கப்பட்ட எந்த மாறியையும் அந்த முறைக்கு வெளியே அணுக முடியாது. முறைகளுக்குள் அறிவிக்கப்பட்ட அனைத்து மாறிகளும் அவற்றின் அறிவிப்பின் தொடக்கத்திலிருந்து முறையின் முடிவு வரை தெரியும். முறை மாறி நோக்கத்திற்கான எடுத்துக்காட்டு இங்கே:

public class JScopeTest1 {


   public static void main(String[] args) {

       System.out.println(myMethod(5));
       System.out.println(myMethod(17));

   }
   public static int  myMethod(int arg) {
       int secondArg = 100; //local method variable
       return secondArg + arg;
   }
}
இங்கே நாம் secondArg , ஒரு உள்ளூர் மாறி அல்லது முறை வாதம் உள்ளது. இந்த மாறியை myMethod முறைக்கு வெளியேயோ அல்லது அறிவிக்கப்படுவதற்கு முன்பாகவோ எங்களால் பயன்படுத்த முடியாது . ஒரு மாறி ஒரு செயல்பாட்டு வாதமாக இருந்தால், அது இந்த முறையின் முழு உடலிலும் தெரியும். மேலே உள்ள எடுத்துக்காட்டில், இதுபோன்ற இரண்டு வாதங்களைப் பெற்றுள்ளோம்: myMethod இல் arg மற்றும் முக்கிய முறையில் args.

வகுப்பு நிலை நோக்கம்

வகுப்பு-நிலை நோக்கம் (உதாரண மாறிகள்) - ஒரு வகுப்பில் அறிவிக்கப்பட்ட எந்த மாறியும் அந்த வகுப்பின் அனைத்து முறைகளுக்கும் கிடைக்கும். அதன் அணுகல் மாற்றியமைப்பைப் பொறுத்து (அதாவது பொது அல்லது தனிப்பட்ட), இது சில நேரங்களில் வகுப்பிற்கு வெளியே அணுகப்படலாம். ஒரு மாறி ஒரு வர்க்க மாறி என்றால், அது ஒரு குறிப்பிட்ட பொருளுடன் பிணைக்கப்பட்டு, இந்த வகுப்பின் ஒரு பொருள் இருக்கும் வரை இருக்கும். பொருள் இல்லை என்றால், மாறியின் நகல் இல்லை. வகுப்பின் அனைத்து முறைகளிலிருந்தும் மாறி தெரியும், அவை அதற்கு முன் அல்லது பின் அறிவிக்கப்பட்டதா என்பதைப் பொருட்படுத்தாமல். ஒவ்வொரு பொருளுக்கும் மற்ற பொருள்களிலிருந்து அதன் சொந்த மாறி உள்ளது. நிலையான முறைகளிலிருந்து மாறிக்கான அணுகல் சாத்தியமில்லை.

குறியீடு உதாரணம்


public class Student {
   
//class level variables
   public String surname;
   String name;
   String secondName;
   private Long birthday; // Long instead of long is used by Gson/Jackson json parsers and various orm databases

   public Student(String surname, String name, String secondName, Date birthday ){
       this.surname = surname;
       this.name = name;
       this.secondName = secondName;
       this.birthday = birthday == null ? 0 : birthday.getTime();
   }

   @Override
   public int hashCode(){
       //TODO: check for nulls
       //return surname.hashCode() ^ name.hashCode() ^ secondName.hashCode() ^ (birthday.hashCode());
       return (surname + name + secondName + birthday).hashCode();
   }
   @Override
   public boolean equals(Object other_) {
       Student other = (Student)other_;
       return (surname == null || surname.equals(other.surname) )
               && (name == null || name.equals(other.name))
               && (secondName == null || secondName.equals(other.secondName))
               && (birthday == null || birthday.equals(other.birthday));
   }
}
குடும்பப்பெயர் , பெயர் , இரண்டாவது பெயர் மற்றும் பிறந்த நாள் ஆகியவை நிகழ்வு மாறிகள்.

தொகுதி நோக்கம்

ஒரு மாறியானது சில குறியீட்டு தொகுதியில் வரையறுக்கப்பட்டால்/அறிவிக்கப்பட்டால், அது அந்தக் குறியீட்டின் இறுதி வரை இருக்கும். பொதுவாக, அத்தகைய மாறிகள் அவை வரையறுக்கப்பட்ட சுருள் பிரேஸ்களுக்கு இடையில் உள்ளன. பெரும்பாலும் பிளாக் ஸ்கோப் ஒரு லூப் மாறியாக இருக்கலாம். ஃபார் லூப் நிலையில் அறிவிக்கப்பட்ட ஒரு மாறியை நீங்கள் முன்பே வரையறுத்தால் தவிர, லூப்பிற்கு வெளியே அணுக முடியாது.

public class JScopeTest2 {
   public static void main(String[] args) {
       for (int i = 0; i < 10; i++) {
           int sum = 0;
           sum = sum + i;
       }
      
       int sum = 1;
       System.out.println(sum);
   }
}
முதல் தொகை மற்றும் i மாறிகள் இரண்டும் லூப்பிற்குள் அறிவிக்கப்படும் மற்றும் இந்த வளையத்திற்கு வெளியே இல்லை. இருப்பினும் இரண்டாவது தொகை வளையத்திற்கு வெளியே அறிவிக்கப்பட்டது, எனவே இந்த குறிப்பிட்ட மாறி அச்சிடப்படும்.

நிலையான மாறிகள்

ஒரு மாறி நிலையானதாக அறிவிக்கப்பட்டால் (நிலையான முக்கிய சொல்லைக் கொண்டு குறிக்கப்பட்டது), அதன் வர்க்கம் இருக்கும் வரை அது இருக்கும். பொதுவாக, நிலையான மாறிகள் துவக்கப்படும் போது, ​​JVM ஒரு வகுப்பை முதல் பயன்பாட்டில் நினைவகத்தில் ஏற்றுகிறது.

import java.util.Date;

public class Student {
   public static int today = 2022;
   String surname;
   String name;
   String secondName;
   Long birthday; // Long instead of long is used by Gson/Jackson json parsers and various orm databases

   public Student(String surname, String name, String secondName, Date birthday ){
       this.surname = surname;
       this.name = name;
       this.secondName = secondName;
       this.birthday = birthday == null ? 0 : birthday.getTime();
   }

 
   public static void main(String[] args) {
       System.out.println(today);
   }

}
ஸ்டேடிக் டுடே மாறியைப் பயன்படுத்த, மாணவர் வகுப்பின் புதிய நிகழ்வை நீங்கள் உருவாக்கக் கூடாது . இங்கே "2022" அச்சிடப்படும்.

அணுகல் மாற்றிகள்

முறை அல்லது மாறிக்கான அணுகலைக் கட்டுப்படுத்த ஜாவாவில் 4 அணுகல் மாற்றிகள் உள்ளன. நீங்கள் அவற்றை வகுப்புகளுக்குள் பயன்படுத்தலாம், முறைகளுக்குள் அல்ல.
  • தனியார் என்பது மிகவும் கட்டுப்படுத்தப்பட்ட மாற்றியமைப்பாகும். அவை அறிவிக்கப்பட்ட வகுப்பிற்கான முறைகள் மற்றும் மாறிகளுக்கான அணுகலை இது கட்டுப்படுத்துகிறது. வகுப்பிற்கு வெளியே சில முறைகள் அல்லது மாறிகளைப் பயன்படுத்த வேண்டிய அவசியம் இல்லை என்றால், தனிப்பட்டதைப் பயன்படுத்தவும். வகுப்பு மாறிகள் பொதுவாக ஜாவாவில் தனிப்பட்டவை.

  • அணுகல் மாற்றி குறிப்பிடப்படவில்லை எனில், முறை அல்லது மாறி இயல்புநிலை மாற்றியை ஏற்கும். இயல்புநிலை தற்போதைய தொகுப்பிலிருந்து மட்டுமே அணுகலை அனுமதிக்கிறது.

  • பாதுகாக்கப்பட்ட மாற்றியானது ஒரு முறை அல்லது மாறியை தற்போதைய தொகுப்பில் இருந்து மட்டுமே அணுக அனுமதிக்கிறது, இது தொகுப்பிற்கு வெளியே உள்ள குழந்தை வகுப்பு மூலம் அணுகப்படாவிட்டால்.

  • பொது என்பது மிகக் குறைந்த கட்டுப்பாடுகளை மாற்றியமைப்பதாகும். இது ஒரு வகுப்பு, முறை அல்லது மாறி அறிவிக்கப்பட்ட வகுப்பிலிருந்து மட்டுமல்லாமல், வெளியிலிருந்தும் அணுக உங்களை அனுமதிக்கிறது. இந்த மாற்றியானது அடிக்கடி பயன்படுத்தப்படுகிறது.

கருத்துக்கள்
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION