1. স্ট্যাটিক ভেরিয়েবল

যখন একটি ক্লাস মেমরিতে লোড করা হয় তখন অবিলম্বে একটি স্থির বস্তু তৈরি হয়। এই বস্তুটি স্ট্যাটিক ক্লাস ভেরিয়েবল (স্ট্যাটিক ক্লাস ক্ষেত্র) সঞ্চয় করে। ক্লাসের কোনো সাধারণ (অ-স্থির) বস্তু তৈরি না হলেও স্ট্যাটিক অবজেক্ট বিদ্যমান।

যখন আমরা একটি ক্লাসে ভেরিয়েবল ঘোষণা করি, তখন আমরা নির্দেশ করি যে সেগুলি একবার তৈরি করা হবে কিনা বা প্রতিটি বস্তুতে এই ভেরিয়েবলগুলির স্বতন্ত্র উদাহরণ থাকা উচিত কিনা। ডিফল্টরূপে, প্রতিটি বস্তুর জন্য প্রতিটি ভেরিয়েবলের একটি নতুন অনুলিপি তৈরি করা হয়।

একটি স্ট্যাটিক ভেরিয়েবল ক্লাসের স্ট্যাটিক অবজেক্টের সাথে আবদ্ধ থাকে এবং সবসময় এটির একটি একক উদাহরণ থাকে।

staticএকটি ক্লাসে একটি স্ট্যাটিক ভেরিয়েবল তৈরি করতে, আপনাকে তার নামের আগে কীওয়ার্ড লিখতে হবে । একটি স্ট্যাটিক ভেরিয়েবল ঘোষণা করার জন্য সাধারণ বিন্যাস হল:

static Type name = value;

যদি একটি স্ট্যাটিক ভেরিয়েবল একটি প্রাথমিক মান বরাদ্দ না করা হয়, এটি একটি ডিফল্ট মান দিয়ে শুরু করা হয়:

টাইপ ডিফল্ট মান
byte
0
short
0
int
0
long
0
float
0.0
double
0.0
char
'\u0000'
(একই জিনিস যেমন
0
)
boolean
false
Object
এবং যে কোন ক্লাস
null

উদাহরণ:

কোড বিঃদ্রঃ
public static int WIDTH = 100;
public static String message = "Hello";
private static Scanner console;
private static int count = 0;
private static boolean flag;

একটি ক্লাসের ভিতরে, আপনি কেবল তাদের নাম ব্যবহার করে এর স্ট্যাটিক ভেরিয়েবলগুলি উল্লেখ করতে পারেন। কিন্তু অন্য ক্লাস থেকে তাদের অ্যাক্সেস করতে, আপনাকে স্ট্যাটিক ভেরিয়েবলের নামের আগে ক্লাসের নাম লিখতে হবে।

ClassName.variable

উদাহরণ:

পরিবর্তনশীল ক্লাস এর ক্লাসের বাইরে একটি পরিবর্তনশীল অ্যাক্সেস করা
public static int WIDTH = 100;
Solution
Solution.WIDTH
public static String message = "Hello";
Main
Main.message
private static Scanner console;
JavaGame
পরিবর্তনশীল হল private. এটা ক্লাসের বাইরে দেখা যায় না।
private static int count = 0;
Counter
পরিবর্তনশীল হল private. এটা ক্লাসের বাইরে দেখা যায় না।
private static boolean flag;
Arithmetic
পরিবর্তনশীল হল private. এটা ক্লাসের বাইরে দেখা যায় না।


2. স্ট্যাটিক এবং নন-স্ট্যাটিক ভেরিয়েবলের মধ্যে পার্থক্য

একটি শ্রেণীর নন-স্ট্যাটিক (সাধারণ) ভেরিয়েবলগুলিকে স্ট্যাটিকগুলির মতো একইভাবে ঘোষণা করা হয়, শুধুমাত্র কীওয়ার্ড ছাড়াই static

সাধারণ ভেরিয়েবল এবং স্ট্যাটিক ভেরিয়েবলের মধ্যে পার্থক্য কি?

একটি ক্লাসের সাধারণ ভেরিয়েবলগুলি ক্লাসের অবজেক্টের সাথে আবদ্ধ থাকে (ক্লাসের উদাহরণ), যখন স্ট্যাটিক ভেরিয়েবলগুলি ক্লাসের স্ট্যাটিক অবজেক্টের সাথে আবদ্ধ থাকে।

যদি একটি ক্লাসের একাধিক দৃষ্টান্ত থাকে, তবে তাদের প্রত্যেকটির অ-স্থির (সাধারণ) ভেরিয়েবলের নিজস্ব অনুলিপি রয়েছে। একটি শ্রেণীর স্ট্যাটিক ভেরিয়েবল সর্বদা তার স্ট্যাটিক অবজেক্টে সংরক্ষিত থাকে এবং তাদের শুধুমাত্র একটি একক উদাহরণ বিদ্যমান থাকে।

আপনি একটি ক্লাসের সাধারণ ভেরিয়েবল (ক্ষেত্র) অ্যাক্সেস করতে পারেন শুধুমাত্র যদি আপনার ক্লাসের একটি বস্তুর রেফারেন্স থাকে। এবং অবশ্যই ক্লাসের ভিতরের পদ্ধতি।

উদাহরণ:

একটি অবজেক্ট রেফারেন্স ব্যবহার করে একটি ক্লাসের একটি ক্ষেত্র অ্যাক্সেস করা
public class DataInfo
{
   public int value = 100;
}

public class Solution
{
   public static void main(String[] args)
   {
      DataInfo info = new DataInfo();
      System.out.println(info.value);
   }
}

আপনি যেকোন জায়গা থেকে স্ট্যাটিক ভেরিয়েবল অ্যাক্সেস করতে পারেন (দৃশ্যমানতা মডিফায়ারগুলির জন্য অ্যাকাউন্টিং করার পরে): সাধারণ পদ্ধতি থেকে, একই শ্রেণীর স্ট্যাটিক পদ্ধতি থেকে, অন্যান্য ক্লাসের পদ্ধতি থেকে ইত্যাদি।

উদাহরণ:

একটি অবজেক্ট রেফারেন্স ব্যবহার না করে একটি ক্লাসের একটি স্ট্যাটিক ফিল্ড অ্যাক্সেস করা
public class DataInfo
{
   public static int value = 100;
}

public class Solution
{
   public static void main(String[] args)
   {
      System.out.println(DataInfo.value);
   }
}

মেমরি কিভাবে সংগঠিত হয়:

ধরা যাক আমাদের Person4টি ক্ষেত্র সহ একটি ক্লাস আছে: দুটি স্ট্যাটিক এবং দুটি নয়।

public class Person
{
   public static int count = 0;
   public static int sum = 0;
   public int age = 0;
   public String name;
}

ক্লাস লোড করার সাথে সাথেই

যখন জাভা মেশিন Personক্লাস লোড করা শেষ করে, মেমরিটি এইরকম দেখাবে:

প্রথম অবজেক্ট তৈরি করার পর

যদি আমরা একটি Personঅবজেক্ট তৈরি করি, তাহলে ছবিটি এমন হবে:

স্ট্যাটিক এবং নন-স্ট্যাটিক ভেরিয়েবলের মধ্যে পার্থক্য 2

অনুগ্রহ করে মনে রাখবেন যে যদিও উভয় বস্তুর দুটি ভেরিয়েবল আছে, তবে এগুলি ভিন্ন ভেরিয়েবল: সাধারণ বস্তুর সাধারণ ভেরিয়েবল থাকে এবং স্থির বস্তুর স্ট্যাটিক ভেরিয়েবল থাকে।

আমরা আরো বস্তুর প্রয়োজন

এর আরো দুটি Personবস্তু তৈরি করা যাক. এখন মেমরি এই মত দেখাবে:

স্ট্যাটিক এবং নন-স্ট্যাটিক ভেরিয়েবলের মধ্যে পার্থক্য 3

দয়া করে মনে রাখবেন যে প্রতিটি বস্তুর নিজস্ব বয়স এবং নামের ভেরিয়েবল রয়েছে।



static3. সংশোধক অপসারণ এবং যোগ করা

স্থির থেকে সাধারণ

যদি আমরা একটি স্ট্যাটিক ভেরিয়েবল গ্রহণ করি এবং এর পরিবর্তনকারীকে সরিয়ে এটিকে একটি সাধারণ রূপান্তর করি তাহলে কী হবে static? উদাহরণস্বরূপ, static int sumপরিবর্তনশীল.

পরিবর্তিত কোড এই মত দেখাবে:

public class Person
{
   public static int count = 0;
   public int sum = 0;
   public int age = 0;
   public String name;
}

এখন মেমরি এই মত দেখায়:

স্ট্যাটিক এবং নন-স্ট্যাটিক ভেরিয়েবলের মধ্যে পার্থক্য

স্ট্যাটিক ভেরিয়েবল স্থির বস্তু থেকে অদৃশ্য হয়ে গেছে, এবং এখন প্রতিটি সাধারণ বস্তুর নিজস্ব sumপরিবর্তনশীল আছে।

সাধারণ থেকে স্থির

আমরা বিপরীত করতে পারি: staticএকটি ক্লাসের সাধারণ ভেরিয়েবলে সংশোধক যোগ করুন। তারা সমস্ত সাধারণ বস্তু থেকে অদৃশ্য হয়ে যাবে এবং স্থির বস্তুতে উপস্থিত হবে। ধরুন আমরা এবং ভেরিয়েবলকে স্ট্যাটিক করার সিদ্ধান্ত নিই । agenameতারপর কোড এই মত দেখাবে:

public class Person
{
   public static int count = 0;
   public int sum = 0;
   public static int age = 0;
   public static String name;
}

এবং এখন মেমরি এই মত দেখাবে:

স্ট্যাটিক মডিফায়ার অপসারণ এবং যোগ করা হচ্ছে