বেসরকারী চূড়ান্ত স্থিত বৈশিষ্ট্য বনাম ব্যক্তিগত চূড়ান্ত বৈশিষ্ট্য


305

জাভাতে, এর মধ্যে পার্থক্য কী:

private final static int NUMBER = 10;

এবং

private final int NUMBER = 10;

উভয়ই privateএবং final, পার্থক্যটি staticবৈশিষ্ট্য।

এর চেয়ে ভাল কি? এবং কেন?


62
ব্যক্তিগত চূড়ান্ত স্থিতিশীল -> একবার এই পরিবর্তনশীল তৈরি করুন। বেসরকারী চূড়ান্ত -> প্রতিটি বস্তুর জন্য এই পরিবর্তনশীল তৈরি করুন। প্রথমে স্মৃতি বাঁচায়, এটির জন্য যান।
ব্যবহারকারী 1923551

4
final staticএর অর্থ এই ভেরিয়েবলটি একটি ধ্রুবক এবং কেবল শ্রেণীর সাথেই যুক্ত হয়, অর্থাত "প্রতি ক্লাসে একটি ধ্রুবক পরিবর্তনশীল" যখন finalঅর্থ "প্রতি উদাহরণে একটি ধ্রুবক পরিবর্তনশীল"। ফলস্বরূপ, আপনি final staticক্লাসের কনস্ট্রাক্টরের একটি ভেরিয়েবল স্থাপন করতে পারবেন না কারণ কনস্ট্রাক্টর নতুন উদাহরণে জড়িত । (আপনি নিজে চেষ্টা করে দেখতে পারেন এবং একটি ত্রুটি পাবেন)
লিটল লিটলকিউ

1
"বর্গ 'কনস্ট্রাক্টারে কোনও চূড়ান্ত স্ট্যাটিক ভেরিয়েবল রাখতে পারবেন না" মানে আমি কনস্ট্রাক্টরটিতে কোনও final staticভেরিয়েবলকে আরম্ভ করতে পারি না , একমাত্র উপায় স্ট্যাটিক ইনিশিয়ালাইজার ব্যবহার করা :)
লিটলিটলকিউ

2
@ user1923551 প্রভাবটি এমন স্টাফগুলির জন্য বিপরীত হয় যা কেবলমাত্র বড় অ্যাপ্লিকেশনগুলিতে, মেমরির দুষ্প্রাপক অ্যাপ্লিকেশনগুলিতে বা সিঙ্গলটন ব্যবহারের সময় সীমিত পরিমাণে প্রয়োজন। প্রতিটি ক্লাসে স্ট্যাটিক স্টাফ থাকা দরকার নেই এমন স্টাফগুলির জন্য মেমরির এক বিশাল অংশ সংরক্ষণ করবে re স্থির চূড়ান্ত বস্তু বা সংগ্রহগুলি ঘোষণার জন্য এটি মেমরি ফাঁসও হতে পারে।
আশা করি

উত্তর:


309

সাধারণভাবে, এর staticঅর্থ " প্রকারের উদাহরণের পরিবর্তে টাইপের সাথেই যুক্ত " "

এর অর্থ আপনি কোনও ধরণের দৃষ্টান্ত তৈরি না করেই স্থির পরিবর্তনশীলকে উল্লেখ করতে পারেন এবং ভেরিয়েবলের সাথে উল্লেখ করা কোনও কোড সঠিক একই ডেটা উল্লেখ করছে। এটি একটি উদাহরণ ভেরিয়েবলের সাথে তুলনা করুন: সেক্ষেত্রে শ্রেণীর উদাহরণ অনুসারে ভেরিয়েবলের একটি স্বতন্ত্র সংস্করণ রয়েছে। উদাহরণস্বরূপ:

Test x = new Test();
Test y = new Test();
x.instanceVariable = 10;
y.instanceVariable = 20;
System.out.println(x.instanceVariable);

10 প্রিন্ট করে: y.instanceVariableএবং x.instanceVariableপৃথক হয়, কারণ xএবং yবিভিন্ন অবজেক্টকে উল্লেখ করে।

আপনি স্থির সদস্যদের রেফারেন্সের মাধ্যমে উল্লেখ করতে পারেন , যদিও এটি করা খারাপ ধারণা। আমরা যদি:

Test x = new Test();
Test y = new Test();
x.staticVariable = 10;
y.staticVariable = 20;
System.out.println(x.staticVariable);

তারপরে এটি 20 টি মুদ্রণ করবে - এখানে কেবলমাত্র একটি পরিবর্তনশীল আছে, উদাহরণস্বরূপ এক নয়। এটি এই হিসাবে এটি পরিষ্কার করা হবে:

Test x = new Test();
Test y = new Test();
Test.staticVariable = 10;
Test.staticVariable = 20;
System.out.println(Test.staticVariable);

এটি আচরণকে আরও প্রকট করে তোলে। আধুনিক আইডিইগুলি সাধারণত দ্বিতীয় তালিকাটিকে তৃতীয়তে পরিবর্তন করার পরামর্শ দেয়।

নীচের মতো মানটিকে আরম্ভ করার জন্য কোনও ইনলাইন ঘোষণার কোনও কারণ নেই, কারণ প্রতিটি উদাহরণের নিজস্ব NUMBERকিন্তু সর্বদা একই মান (অপরিবর্তনীয় এবং একটি আক্ষরিক দিয়ে আদি) হয়। final staticসমস্ত দৃষ্টান্তের জন্য শুধুমাত্র একটি পরিবর্তনশীল থাকার চেয়ে এটি একই ।

private final int NUMBER = 10;

সুতরাং যদি এটি পরিবর্তন করতে না পারে, উদাহরণস্বরূপ একটি অনুলিপি থাকার কোনও মানে নেই।

তবে, এটি বোঝা যায় যে যদি এটির মতো কোনও কনস্ট্রাক্টারে আরম্ভ করা হয়:

// No initialization when is declared
private final int number;

public MyClass(int n) {
   // The variable can be assigned in the constructor, but then
   // not modified later.
   number = n;
}

এখন, প্রতিটি উদাহরণের জন্য MyClass, আমরা এর আলাদা কিন্তু অপরিবর্তনীয় মান রাখতে পারি number


10
জাভা 5 এ এনামগুলি উপলভ্য হওয়া পর্যন্ত স্থির ফাইনালটি ধ্রুবকগুলি ঘোষণার স্বাভাবিক উপায় ছিল।
ভিনিত রেনল্ডস

22
@ ভিনিট: স্ট্যাটিক ফাইনালগুলি এখনও আদিম স্থির ঘোষণা করার উপায়, যদি না আপনি তাদের একটি সংখ্যাযুক্ত =))
চিই

@ ম্যাথিউ: সম্ভাব্যভাবে। একটি ধ্রুবক জন্য নয়, কিছু যৌক্তিক উদাহরণ-সম্পর্কিত মান জন্য। আমি যে কোনওভাবেই সিলেটলেট পছন্দ করি তা নয়।
জন স্কিটি

1
একটি মৌলিক প্রশ্ন। এটি ব্যবহার মূল্যহীন private finalউপর private static final/ সংশোধনের ক্লাস থেকে সামান্য মেমরি যা আলিঙ্গন কিভাবে? আসুন calculatorসীমিত রামযুক্ত ডিভাইসের জন্য তবে প্রচুর সিপিইউ সংস্থান রয়েছে।
মায়ো হেতেট

1
@ উইনমিওহেট: আপনি যদি একটি স্ট্যাটিক ক্ষেত্র ব্যবহার করেন তবে মোট একটাই আছে। আপনি যদি একটি উদাহরণ ক্ষেত্র ব্যবহার করেন, প্রতি উদাহরণে একটি আছে। স্থির ক্ষেত্রটি ব্যবহার করা আরও ভাল হতে পারে যদি না আপনার কোনও দৃষ্টান্ত না থাকে, সেক্ষেত্রে এটি যেভাবেই অকেজো।
জন স্কিটি

38

জন্য চূড়ান্ত , এটা রানটাইম এ মান আলাদা বরাদ্দ করা যেতে পারে সক্রিয়া। উদাহরণ স্বরূপ

Class Test{
  public final int a;
}

Test t1  = new Test();
t1.a = 10;
Test t2  = new Test();
t2.a = 20; //fixed

এভাবে প্রতিটি দৃষ্টান্ত ক্ষেত্র বিভিন্ন মান আছে একটি

জন্য স্ট্যাটিক চূড়ান্ত , সমস্ত উদাহরণ একই মান ভাগ, এবং প্রথম সক্রিয়া পর রদবদল করা যাবে না।

Class TestStatic{
      public static final int a;
}

TestStatic t1  = new TestStatic();
t1.a = 10;
TestStatic t2  = new TestStatic();
t1.a = 20;   // ERROR, CAN'T BE ALTERED AFTER THE FIRST INITIALIZATION.

90
এই সংকলন হবে না! একটি চূড়ান্ত ভেরিয়েবলের হয় হয় একটি মান নির্ধারণ করা উচিত, অথবা এর নির্মাতাদের একটি মান নির্ধারিত থাকতে হবে। এই উত্তরটি সঠিক হবে যদি 2 জন কনস্ট্রাক্টর দেওয়া হয়, প্রত্যেকটি আলাদা মানকে 'ক' প্রদান করে।
ম্যাটসি

14
নিশ্চিত করা, এটি সংকলন করবে না। উপরে প্রকাশিত হিসাবে, চূড়ান্ত উদাহরণের ভেরিয়েবলটি কনস্ট্রাক্টর শেষ হওয়ার আগেই ইনস্ট্যান্ট করতে হবে এবং ক্লাসটি তৈরি হওয়ার আগে চূড়ান্ত শ্রেণীর ভেরিয়েবলগুলি ইনস্ট্যান্ট করতে হবে (আপনি একটি স্ট্যাটিক ব্লক ব্যবহার করতে পারেন)। কেন এটি এত উপার্জন পেয়েছে?
রুডি কারশওয়া

যেমন ম্যাটসি বলেছে, আপনি সেই বস্তুটি তৈরির পরে কোনও চূড়ান্ত পরিবর্তনশীলকে বরাদ্দ করতে পারবেন না - বাস্তবে আপনি তার চূড়ান্ত ভেরিয়েবলগুলিকে মান না দিয়েও কোনও বস্তু তৈরি করতে পারবেন না ...
jamesdeath123

এই ক্ষেত্রে যদি কেউ হোঁচট খায় তবে দয়া করে ম্যাটসির উত্তরটি অনুসরণ করুন।
ফাজ

এটিই আমার মনে হয় ওপি জিজ্ঞাসা করছিল, আমি ভুলে গিয়েছিলাম যে যদি ফাইনালটিকে ঘোষণাপত্রে সরবরাহ না করা হয় তবে তা ইনস্ট্যান্টেশনে একটি মান নির্ধারণ করা যেতে পারে।
স্যালসারো 69

34

একটি staticপরিবর্তনশীল অ্যাপ্লিকেশনটির পুরো আজীবন স্মৃতিতে থাকে এবং ক্লাস লোডিংয়ের সময় শুরু হয়। staticপ্রতিবার আপনি যখন কোনও newবস্তু তৈরি করেন তখন একটি অ- পরিবর্তনশীল সূচনা করা হয় । এটি ব্যবহার করা সাধারণত:

private static final int NUMBER = 10;

কেন? এটি উদাহরণস্বরূপ মেমরির পদচিহ্ন হ্রাস করে। এটি সম্ভবত ক্যাশের হিটগুলির পক্ষেও অনুকূল। এবং এটি ঠিক বোঝায়: staticএকটি নির্দিষ্ট ধরণের (ওরফে class) সমস্ত দৃষ্টান্ত (ওরফে অবজেক্ট) জুড়ে এমন জিনিসগুলির জন্য ব্যবহার করা উচিত ।


একটি স্ট্যাটিক ভেরিয়েবল রানটাইম সময়ে তৈরি করা হয়। অতএব আপনি বস্তুটি তৈরির আগে বলছেন পরিবর্তনশীল বা পদ্ধতিটি ব্যবহার করতে পারেন।
ববি

13
জাভা কোডিং কনভেনশনের মাধ্যমে একটি স্ট্যাটিক চূড়ান্ত ভেরিয়েবলের নামটি সমস্ত বড় হবে।
স্টার ব্লু

@ মার্তিজন আদালত, অ্যাপটির জীবদ্দশায় কোনও ক্লাস একবার ব্যবহার করা হবে এমন পরিস্থিতি সম্পর্কে কী হবে! private final intউদাহরণটি GC'ed হয়ে গেলে মেমোরি থেকে সরানো হবে যখন private static final intঅ্যাপ্লিকেশনটির আজীবন স্মৃতিতে থাকবে। উপরের দৃশ্যে আপনি কী পরামর্শ দিচ্ছেন?
এমএনএএন

@ এমএনএএন: এটি অত্যন্ত তাত্ত্বিক। আক্ষরিকভাবে এর জন্য কোনও কার্যকর ব্যবহারের ক্ষেত্রে দৃশ্যমান নেই। আপনার কাছে যদি ক্লাসে 50000 ইন্ট ভার্স থাকে তবে এটি উপকারী হতে পারে। এমনকি এই ক্ষেত্রে, এটি 200kb স্মৃতি সঞ্চয় করতে পারে। যেহেতু আমরা জাভা কথা বলছি, এটি সম্পূর্ণ অপ্রাসঙ্গিক বলে মনে হচ্ছে। মেমরি সমালোচনামূলক ডিভাইসের ক্ষেত্রে, একটি শালীন সি বা সি ++ সংকলক সর্বদা সেই সমস্ত পূর্ণসংখ্যার মানগুলিকে ইনলাইন করে, সম্পূর্ণরূপে মেমরি মুক্ত করার প্রয়োজনীয়তা বাদ দেয়।
মার্টিজন আদালত

17

স্থির অর্থ "শ্রেণীর সাথে যুক্ত"; এটি ছাড়া, চলক শ্রেণীর প্রতিটি উদাহরণের সাথে যুক্ত। যদি এটি স্থির থাকে, তার অর্থ আপনার স্মৃতিতে কেবল একটি থাকবে; যদি তা না হয় তবে আপনার তৈরি প্রতিটি দৃষ্টান্তের জন্য আপনার একটি থাকবে। স্ট্যাটিক মানে বর্ধিত পরিবর্তন যতক্ষণ ক্লাস লোড হয় ততক্ষণ স্মৃতিতে থাকবে; এটি ছাড়াই, ভেরিয়েবলটি gc'd করা যায় যখন এর উদাহরণটি হয়।


দৃষ্টান্তের ভেরিয়েবলগুলি যখনই এর সমস্ত রেফারেন্স / অবজেক্টগুলিতে মারা যায়, ঠিক তখনি জিসি'ড হয়?
রুচির বড়োনিয়া

উদাহরণগুলি gc'd হয়, তবে স্ট্যাটিকস ক্লাসগুলির সাথে সম্পর্কিত, উদাহরণ নয়। ক্লাস যতক্ষণ স্মৃতিতে থাকবে ততক্ষণ আপনি এর সর্বজনীন স্থির দৃষ্টান্ত এবং পদ্ধতিগুলি উল্লেখ করতে সক্ষম হবেন। যারা পেরিম জেনে যায় (বা এর জেডিকে 8 সমমানের যাই হোক না কেন) এবং জিসিডি হয় না।
ডাফাইমো

ভুল। স্মৃতিতে আপনার কাছে কোনও উদাহরণের উল্লেখ থাকলে আপনি এর উপলব্ধ পদ্ধতি এবং দৃষ্টান্তগুলি অ্যাক্সেস করতে পারেন। বাকিটা ভুল। আপনি কোনও শ্রেণি এবং এর উদাহরণগুলির মধ্যে পার্থক্য বুঝতে ব্যর্থ হন।
duffymo

13

উত্তরগুলি পড়তে আমি সত্যিই পয়েন্টটিতে পৌঁছানোর কোনও সত্যিকারের পরীক্ষা পাইনি। এখানে আমার 2 সেন্ট:

public class ConstTest
{

    private final int         value             = 10;
    private static final int  valueStatic       = 20;
    private final File        valueObject       = new File("");
    private static final File valueObjectStatic = new File("");

    public void printAddresses() {


        System.out.println("final int address " +
                ObjectUtils.identityToString(value));
        System.out.println("final static int address " +
                ObjectUtils.identityToString(valueStatic));
        System.out.println("final file address " + 
                ObjectUtils.identityToString(valueObject));
        System.out.println("final static file address " + 
                ObjectUtils.identityToString(valueObjectStatic));
    }


    public static void main(final String args[]) {


        final ConstTest firstObj = new ConstTest();
        final ConstTest sndObj = new ConstTest();

        firstObj.printAdresses();
        sndObj.printAdresses();
    }

}

প্রথম বস্তুর জন্য ফলাফল:

final int address java.lang.Integer@6d9efb05
final static int address java.lang.Integer@60723d7c
final file address java.io.File@6c22c95b
final static file address java.io.File@5fd1acd3

২ য় অবজেক্টের জন্য ফলাফল:

final int address java.lang.Integer@6d9efb05
final static int address java.lang.Integer@60723d7c
final file address java.io.File@3ea981ca
final static file address java.io.File@5fd1acd3

উপসংহার:

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

তবে অ-স্থিতিশীল সদস্যদের যদি কোনও আদিম ধরণের উদাহরণ না হয় তবে তাদের জন্য মেমরির সদৃশ রয়েছে।

10 এর মান স্ট্যাটিকের মান পরিবর্তন করা আরও আরও এগিয়ে যাবে কারণ জাভা দুটি ইন্টার ভেরিয়েবলগুলিকে একই ঠিকানা দেবে।


2
'ইনট' -> পূর্ণসংখ্যার অটোবক্সিং এখানে বিভ্রান্তি সৃষ্টি করছে। আপনি দেখছেন যে কিছু (ছোট) ইন্ট মানগুলির অটোবক্সিং একই পূর্ণসংখ্যার অবজেক্টে নিয়ে যায়।
dkneller

@ স্ট্যাকহোলা @ ডকেনেলার ​​প্রকৃতপক্ষে, অটোবক্সিং একটি খুব গুরুত্বপূর্ণ বিশদ যা এখানে ঘটে। স্বাক্ষরটি হ'ল ObjectUtils.identityToString(Object)। (এছাড়াও, জাভা কোনওভাবেই রেফারেন্স দিয়ে কোনও পাস নেই)। একটি আসল দরকারী পরীক্ষাটি হ'ল দুটি জিনিস বরাদ্দ করা এবং public final int FOO = 10জোর করে জাভা প্রতিবিম্ব ব্যবহার করে একটি ভেরিয়েবলের মান পরিবর্তন করা। তারপরে অন্য বস্তুটিরও এর মান পরিবর্তন হয়েছে কিনা তা পরীক্ষা করে দেখুন।
মার্টিজন আদালত

11

অন্য উত্তরগুলি এটিকে বেশ স্পষ্ট করে মনে হয়েছে যে সাধারণত অ স্থিতিশীল ধ্রুবক ব্যবহার করার কোনও কারণ নেই, তবে আমি এমন কাউকে খুঁজে পেলাম না যে তাদের ধ্রুবক ভেরিয়েবলের সাথে বিভিন্ন মানের সাথে বিভিন্ন উদাহরণ পাওয়া সম্ভব।

নিম্নলিখিত উদাহরণ বিবেচনা করুন:

public class TestClass {
    private final static double NUMBER = Math.random();

    public TestClass () {
        System.out.println(NUMBER);
    }
}

টেস্টক্লাসের তিনটি দৃষ্টান্ত তৈরি করা একই র্যান্ডম মানটি তিনবার মুদ্রণ করবে, যেহেতু কেবলমাত্র একটিই মান উত্পন্ন এবং স্থির ধ্রুবকটিতে সঞ্চিত।

তবে পরিবর্তে নিম্নলিখিত উদাহরণটি চেষ্টা করার সময়:

public class TestClass {
    private final double NUMBER = Math.random();

    public TestClass () {
        System.out.println(NUMBER);
    }
}

টেস্টক্লাসের তিনটি ইনস্ট্যান্স তৈরি করা এখন তিনটি পৃথক এলোমেলো মান মুদ্রণ করবে, কারণ প্রতিটি উদাহরণের নিজস্ব এলোমেলোভাবে ধ্রুবক মান উত্পন্ন হয়।

আমি এমন পরিস্থিতিতে ভাবতে পারি না যেখানে বিভিন্ন পরিস্থিতিতে বিভিন্ন ধ্রুবক মান থাকা সত্যিই কার্যকর হবে তবে আমি আশা করি এটি স্থিতিশীল এবং অ-স্থিতিশীল ফাইনালের মধ্যে স্পষ্ট পার্থক্য রয়েছে তা উল্লেখ করতে সহায়তা করে।


2

যেমন জোন আগেই বলেছে, একটি স্ট্যাটিক ভেরিয়েবল, যা বর্গ ভেরিয়েবল হিসাবেও পরিচিত, এটি একটি চলক যা শ্রেণীর উদাহরণগুলির মধ্যে বিদ্যমান।

আমি এর উদাহরণ এখানে পেয়েছি :

public class StaticVariable
{
  static int noOfInstances;
  StaticVariable()
  {
    noOfInstances++;
  }
  public static void main(String[] args)
  {
    StaticVariable sv1 = new StaticVariable();
    System.out.println("No. of instances for sv1 : " + sv1.noOfInstances);

    StaticVariable sv2 = new StaticVariable();
    System.out.println("No. of instances for sv1 : "  + sv1.noOfInstances);
    System.out.println("No. of instances for st2 : "  + sv2.noOfInstances);

    StaticVariable sv3 = new StaticVariable();
    System.out.println("No. of instances for sv1 : "  + sv1.noOfInstances);
    System.out.println("No. of instances for sv2 : "  + sv2.noOfInstances);
    System.out.println("No. of instances for sv3 : "  + sv3.noOfInstances);
  }
}

প্রোগ্রামটির আউটপুট নীচে দেওয়া হল:

যেমন আমরা এই উদাহরণে দেখতে পারি প্রতিটি বস্তুর নিজস্ব বর্গ ভেরিয়েবলের নিজস্ব অনুলিপি রয়েছে।

C:\java>java StaticVariable
No. of instances for sv1 : 1
No. of instances for sv1 : 2
No. of instances for st2 : 2
No. of instances for sv1 : 3
No. of instances for sv2 : 3
No. of instances for sv3 : 3

2

আমি যে পরীক্ষাগুলি করেছি সেগুলি থেকে স্থির চূড়ান্ত ভেরিয়েবলগুলি চূড়ান্ত (অ-স্থিতিশীল) ভেরিয়েবলগুলির সাথে এক নয়! চূড়ান্ত (অ স্থিতিশীল) ভেরিয়েবলগুলি বস্তু থেকে বস্তুতে পৃথক হতে পারে !!! তবে কেবল তখনই যদি কনস্ট্রাক্টরের মধ্যে আরম্ভ হয়! (এটি যদি কনস্ট্রাক্টর থেকে শুরু না করা হয় তবে এটি কেবল স্মৃতিশক্তি নষ্ট হয় কারণ এটি তৈরি হওয়া প্রতিটি বস্তুর জন্য চূড়ান্ত পরিবর্তনশীল তৈরি করে যা পরিবর্তন করা যায় না))

উদাহরণ স্বরূপ:

class A
{
    final int f;
    static final int sf = 5;

    A(int num)
    {
        this.f = num;
    }

    void show()
    {
        System.out.printf("About Object: %s\n Final: %d\n Static Final: %d\n\n", this.toString(), this.f, sf);
    }

    public static void main(String[] args)
    {
        A ob1 = new A(14);
        ob1.show();

        A ob2 = new A(21);
        ob2.show();

    }
}

পর্দায় যা প্রদর্শিত হবে তা হ'ল:

অবজেক্ট সম্পর্কে: A @ addbf1 ফাইনাল: 14 স্ট্যাটিক ফাইনাল: 5

অবজেক্ট সম্পর্কে: এ @ 530daa ফাইনাল: 21 স্ট্যাটিক ফাইনাল: 5

বেনাম 1 ম বর্ষের আইটি শিক্ষার্থী, গ্রীস


এই কোনও উত্তর নয় :(
পান্ডে

2

জোনের জবাব ছাড়াও আপনি যদি স্থির চূড়ান্ত ব্যবহার করেন তবে এটি একধরণের "সংজ্ঞা" হিসাবে আচরণ করবে। আপনি ক্লাসটি যা এটি ব্যবহার করে তা সংকলন করে নিলে এটি সংকলিত ক্লাস ফাইলটিতে জ্বলতে থাকবে। এটি সম্পর্কে আমার থ্রেড চেক করুন

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

দৃষ্টান্তে বিভিন্ন মানগুলি কীভাবে ব্যবহার করতে হয় তা দেখানোর জন্য এই কোডটি চেক করুন:

public class JustFinalAttr {
  public final int Number;

  public JustFinalAttr(int a){
    Number=a;
  }
}

...System.out.println(new JustFinalAttr(4).Number);

বিস্তারিত তুলনার জন্য আমার এখানে একটি লিঙ্ক ছিল। আমি দুঃখিত, বন্ধুরা, এটি অনুমান করা যায় যে এটি সংযত হয়েছে।
ব্লন্ডকোড

লিঙ্কটি ফিরে এসেছে। একজন সম্পাদক এটিকে মৃত হিসাবে নিয়ে গিয়েছিলেন। এটা এখন লাইভ বলে মনে হচ্ছে।
এরিক জি। হ্যাজস্ট্রোম

2

আমার দুটি সেন্ট এখানে:

final           String CENT_1 = new Random().nextInt(2) == 0 ? "HEADS" : "TAILS";
final   static  String CENT_2 = new Random().nextInt(2) == 0 ? "HEADS" : "TAILS";

উদাহরণ:

package test;

public class Test {

    final long OBJECT_ID = new Random().nextLong();
    final static long CLASSS_ID = new Random().nextLong();

    public static void main(String[] args) {
        Test[] test = new Test[5];
        for (int i = 0; i < test.length; i++){
            test[i] = new Test();
            System.out.println("Class id: "+test[i].CLASSS_ID);//<- Always the same value
            System.out.println("Object id: "+test[i].OBJECT_ID);//<- Always different
        }
    }
}

মূলটি হ'ল ভেরিয়েবল এবং ফাংশনগুলি বিভিন্ন মান প্রদান করতে পারে here তাই চূড়ান্ত ভেরিয়েবলগুলি বিভিন্ন মান সহ নির্ধারিত হতে পারে।


আপনি দয়া করে কোনটি আরও ভাল এবং কেন ব্যাখ্যা করতে পারেন?
ড্যানিয়েল

2

স্ট্যাটিক, স্ট্যাটিক ফাইনাল, ফাইনাল ভেরিয়েবলের ব্যবহার বোঝার জন্য আরও একটি সহজ উদাহরণ। কোড মন্তব্যে যথাযথ ব্যাখ্যা রয়েছে।

public class City {

    // base price that is always same for all objects[For all cities].
    private static double iphone_base_price = 10000;

    // this is total price = iphone_base_price+iphone_diff;
    private double iphone_citi_price;

    // extra price added to iphone_base_price. It is constant per city. Every
    // city has its own difference defined,
    private final double iphone_diff;

    private String cityName = "";

    // static final will be accessible everywhere within the class but cant be
    // changed once initialized.
    private static final String countryName = "India";

    public City(String cityName, double iphone_diff) {
        super();
        this.iphone_diff = iphone_diff;
        iphone_citi_price = iphone_base_price + iphone_diff;
        this.cityName = cityName;

    }

    /**
     * get phone price
     * 
     * @return
     */
    private double getPrice() {

        return iphone_citi_price;
    }

    /**
     * Get city name
     * 
     * @return
     */
    private String getCityName() {

        return cityName;
    }

    public static void main(String[] args) {

        // 300 is the
        City newyork = new City("Newyork", 300);
        System.out.println(newyork.getPrice() + "  " + newyork.getCityName());

        City california = new City("California", 800);
        System.out.println(california.getPrice() + "  " + california.getCityName());

        // We cant write below statement as a final variable can not be
        // reassigned
        // california.iphone_diff=1000; //************************

        // base price is defined for a class and not per instances.
        // For any number of object creation, static variable's value would be the same
        // for all instances until and unless changed.
        // Also it is accessible anywhere inside a class.
        iphone_base_price = 9000;

        City delhi = new City("delhi", 400);
        System.out.println(delhi.getPrice() + "  " + delhi.getCityName());

        City moscow = new City("delhi", 500);
        System.out.println(moscow.getPrice() + "  " + moscow.getCityName());

        // Here countryName is accessible as it is static but we can not change it as it is final as well. 
        //Something are meant to be accessible with no permission to modify it. 
        //Try un-commenting below statements
        System.out.println(countryName);

        // countryName="INDIA";
        // System.out.println(countryName);

    }

}

1

খুব সামান্য এবং অচল

তারা উভয় ধ্রুবক হিসাবে খুব বেশি পার্থক্য নেই। বেশিরভাগ শ্রেণীর ডেটা অবজেক্টের জন্য, স্ট্যাটিকের অর্থ শ্রেণীর সাথেই কিছু যুক্ত থাকে, সেখানে কেবলমাত্র একটি অনুলিপি থাকত না কেন নতুন দিয়ে কতগুলি বস্তু তৈরি করা হয়েছিল।

যেহেতু এটি একটি ধ্রুবক, এটি আসলে ক্লাসে বা কোনও উদাহরণে সঞ্চয় করা নাও হতে পারে তবে সংকলকটি এখনও একটি স্থিতিশীল পদ্ধতি থেকে উদাহরণের বস্তুগুলিতে অ্যাক্সেস করতে দেবে না, এমনকি যদি এটি জানে যে এটি কী হবে। আপনি যদি এটি স্থির না করেন তবে প্রতিবিম্ব API এর অস্তিত্বের জন্য কিছু অর্থহীন কাজের প্রয়োজনও হতে পারে।


1

যেহেতু ক্লাসে কোনও পরিবর্তনশীলকে চূড়ান্ত হিসাবে ঘোষণা করা হয় এবং একই কমান্ডে সূচনা করা হয়, তাই এটি স্থির হিসাবে ঘোষণা না করার কোনও কারণ নেই, কারণ এটি উদাহরণ হিসাবে বিবেচনা না করে এর একই মান থাকবে। সুতরাং, সমস্ত দৃষ্টান্ত একই মানের জন্য একই মেমরি ঠিকানা ভাগ করে নিতে পারে, সুতরাং প্রতিটি উদাহরণের জন্য একটি নতুন ভেরিয়েবল তৈরি করার প্রয়োজনীয়তা এবং 1 সাধারণ ঠিকানা ভাগ করে মেমরি সংরক্ষণ করে প্রসেসিংয়ের সময় সাশ্রয় করে।


1

ব্যক্তিগত স্ট্যাটিক ফাইনালটি ধ্রুবক হিসাবে বিবেচিত হবে এবং ধ্রুবকটি কেবল এই শ্রেণীর মধ্যে অ্যাক্সেস করা যেতে পারে। যেহেতু, মূলশব্দ স্ট্যাটিক অন্তর্ভুক্ত, মানটি শ্রেণীর সমস্ত বস্তুর জন্য স্থির থাকবে।

বেসরকারী চূড়ান্ত পরিবর্তনশীল মান প্রতি বস্তু হিসাবে ধ্রুবক মত হবে।

আপনি java.lang.String উল্লেখ করতে পারেন বা নীচের উদাহরণটি সন্ধান করতে পারেন।

public final class Foo
{

    private final int i;
    private static final int j=20;

    public Foo(int val){
        this.i=val;
    }

    public static void main(String[] args) {
        Foo foo1= new Foo(10);

        Foo foo2= new Foo(40);

        System.out.println(foo1.i);
        System.out.println(foo2.i);
        System.out.println(check.j);
    }
}

// আউটপুট:

10
40
20

0

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


0

আপনি যদি এই পরিবর্তনশীল স্থিতিশীলটিকে চিহ্নিত করেন তবে আপনারা জানেন যে আপনি আবার এই মানগুলিতে অ্যাক্সেস পেতে স্ট্যাটিক পদ্ধতিগুলির প্রয়োজন হবেন, যদি আপনি ইতিমধ্যে কেবল স্থির পদ্ধতিতে এই ভেরিয়েবলগুলি ব্যবহার করার কথা ভাবেন তবে এটি কার্যকর হবে। যদি এটি হয় তবে এটি সেরা হবে।

তবে আপনি এখন পরিবর্তনশীলটিকে সর্বজনীন হিসাবে তৈরি করতে পারেন যেহেতু "সিস্টেম.আউট" এর মতো কেউ এটিকে পরিবর্তন করতে পারে না, এটি আবার আপনার উদ্দেশ্য এবং আপনি কী অর্জন করতে চান তার উপর নির্ভর করে।


1
স্ট্যাটিক পদ্ধতির স্ট্যাটিক ভেরিয়েবলগুলি অ্যাক্সেসের প্রয়োজন হবে না - আমি মনে করি আপনি "স্ট্যাটিক পদ্ধতি থেকে উদাহরণ ভেরিয়েবলগুলি অ্যাক্সেস করতে" (অনুমোদিত নয়) ভাবছেন।
ataulm

0

আসুন বলুন যে ক্লাসে যদি কখনও একের বেশি উদাহরণ না থাকে তবে কোনটি আরও মেমরি নেয়:

প্রাইভেট স্ট্যাটিক ফাইনাল ইন আইডি = 250; বা ব্যক্তিগত চূড়ান্ত আইডি = 250;

আমি বুঝতে পেরেছি যে স্ট্যাটিক ক্লাসের ধরণটিকে মেমরিতে কেবল একটি অনুলিপি সহ উল্লেখ করবে এবং নন স্ট্যাটিক প্রতিটি উদাহরণের পরিবর্তনশীলের জন্য একটি নতুন মেমরি অবস্থানে থাকবে। তবে অভ্যন্তরীণভাবে যদি আমরা কেবল একই শ্রেণীর 1 টি উদাহরণকে তুলনা করি (অর্থাত্ 1 টিরও বেশি উদাহরণ তৈরি করা হবে না), তবে 1 টি স্ট্যাটিক চূড়ান্ত ভেরিয়েবল দ্বারা ব্যবহৃত স্থানের ক্ষেত্রে কোনও ওভারহেড আছে কি?


1
দয়া করে কেবল পুনরাবৃত্তি করবেন না, অন্যান্য উত্তরগুলি ইতিমধ্যে কভার করেছে।
ব্যবহারকারী অজানা 13

0

স্ট্যাটিক ভেরিয়েবল শ্রেণীর অন্তর্ভুক্ত (যার অর্থ সমস্ত বস্তু সেই পরিবর্তনশীল ভাগ করে নেয়)। অ স্থির পরিবর্তনশীল প্রতিটি বস্তুর অন্তর্ভুক্ত belongs

public class ExperimentFinal {

private final int a;
private static final int b = 999; 

public ExperimentFinal(int a) {
    super();
    this.a = a;
}
public int getA() {
    return a;
}
public int getB() {
    return b;
}
public void print(int a, int b) {
    System.out.println("final int: " + a + " \nstatic final int: " + b);
}
public static void main(String[] args) {
    ExperimentFinal test = new ExperimentFinal(9);
    test.print(test.getA(), test.getB());
} }

আপনি উপরের উদাহরণ হিসাবে দেখতে পাচ্ছেন, "ফাইনাল ইনট" এর জন্য আমরা ক্লাসের প্রতিটি উদাহরণ (অবজেক্ট) জন্য আমাদের ভেরিয়েবল বরাদ্দ করতে পারি, তবে "স্ট্যাটিক ফাইনাল ইনট" এর জন্য আমাদের ক্লাসে একটি ভেরিয়েবল বরাদ্দ করা উচিত (স্ট্যাটিক ভেরিয়েবল ক্লাসের অন্তর্গত) )।



0

চূড়ান্ত: একবার চূড়ান্ত ভেরিয়েবল নির্ধারিত হয়ে গেলে এটিতে সর্বদা একই মান থাকে। পরিবর্তনশীল স্থির বা স্থির নয় যেখানেই: মেমোরিতে একবারে আরম্ভ হওয়া সমস্ত দৃষ্টান্তের জন্য এটি কেবলমাত্র একটি পরিবর্তনশীল হবে


-1

এটি সাহায্য করতে পারে

public class LengthDemo {
public static void main(String[] args) {
    Rectangle box = new Rectangle();
    System.out.println("Sending the value 10.0 "
            + "to the setLength method.");
    box.setLength(10.0);
    System.out.println("Done.");
    }
}

1
নিশ্চিত যে এটি এই ক্যুইজিটনের জন্য একটি উত্তর?
মিকুস

-2

"স্ট্যাটিক" কীওয়ার্ডটি শ্রেণীর স্বতন্ত্র উদাহরণগুলির চেয়ে শ্রেণীর পরিবর্তনশীল সম্পত্তি তৈরি করে। সেই পরিবর্তকের একটি অনুলিপি থাকবে যা সেই শ্রেণীর সমস্ত দৃষ্টান্তের মধ্যে ভাগ করা আছে। স্থিতিশীল ভেরিয়েবলের রাজ্যের যে কোনও পরিবর্তন সমস্ত দৃষ্টান্তে প্রতিফলিত হবে। স্ট্যাটিকের সাথে চূড়ান্ত যোগ করুন এবং আমরা একটি পরিবর্তনশীল পাই যা ক্লাস লোডিংয়ের সময় একবারে এবং সবার জন্য শুরু করা হয়েছিল এবং পরে শ্রেণীর কোনও উদাহরণ দ্বারা পরিবর্তন করা যায় না। স্থিতিশীল চূড়ান্ত ভেরিয়েবলগুলি ঘোষণার সময় শুরু করা দরকার অন্যথায় আমাদের সংকলনের সময় ত্রুটি রয়েছে। যতক্ষণ বেসরকারী উদাহরণ ক্ষেত্রের সাথে সম্পর্কিত, এটি কোনও শ্রেণীর কোনও অবজেক্ট / উদাহরণের সম্পত্তি / অবস্থা বোঝায়। শ্রেণীর প্রতিটি উদাহরণ / অবজেক্টের নিজস্ব ভেরিয়েবলের নিজস্ব অনুলিপি থাকবে। যখন উদাহরণের পরিবর্তনশীল চূড়ান্ত হিসাবে ঘোষণা করা হয়, এর অর্থ এই উদাহরণের জন্য আমরা এর মান পরিবর্তন করতে পারি না। এর জন্য আমাদের ঘোষণায় বা কনস্ট্রাক্টারে চূড়ান্ত পরিবর্তনশীল সূচনা করতে হবে its এটি যদি সেগুলির মধ্যে দুটিতে না করা হয় তবে সংকলনের সময় ত্রুটি দেখাবে। একবার সূচনা করার পরে, আপনি যদি একটি মান পুনর্নির্দিষ্ট করার চেষ্টা করেন তবে আপনি একটি সংকলন সময় ত্রুটি পাবেন। স্থিতিশীল চূড়ান্ত ভেরিয়েবলগুলি ব্যবহার করুন যেখানে ক্লাসের সমস্ত দৃষ্টান্তের মধ্যে ডেটা ভাগ করা হবে এবং আপনি কেবল তথ্যটি পড়তে চান। উদাহরণস্বরূপ চূড়ান্ত পরিবর্তনশীল আপনি যদি শ্রেণীর প্রতিটি পৃথক উদাহরণের সাথে সম্পর্কিত কিছু ডেটা উপস্থাপন করতে চান তবে একবার সঞ্চিত পরিবর্তন করা যায় না। স্থির এবং উদাহরণ কী শব্দের ব্যবহার আপনার নকশার প্রয়োজন এবং সেই ডেটা ডোমেনে কী উপস্থাপন করে তার উপর নির্ভর করে depends যদি ডেটা শ্রেণীর উদাহরণগুলিতে ব্যবহার করা হয় তবে প্রতিটি বস্তুর জন্য স্বতন্ত্র অনুলিপি / মেমরি রেফারেন্সের প্রয়োজন নেই। এর জন্য আমাদের ঘোষণায় বা কনস্ট্রাক্টারে চূড়ান্ত পরিবর্তনশীল সূচনা করতে হবে its এটি যদি সেগুলির মধ্যে দুটিতে না করা হয় তবে সংকলনের সময় ত্রুটি দেখাবে। একবার সূচনা করার পরে, আপনি যদি একটি মান পুনর্নির্দিষ্ট করার চেষ্টা করেন তবে আপনি একটি সংকলন সময় ত্রুটি পাবেন। স্থিতিশীল চূড়ান্ত ভেরিয়েবলগুলি ব্যবহার করুন যেখানে ক্লাসের সমস্ত দৃষ্টান্তের মধ্যে ডেটা ভাগ করা হবে এবং আপনি কেবল তথ্যটি পড়তে চান। উদাহরণস্বরূপ চূড়ান্ত পরিবর্তনশীল আপনি যদি শ্রেণীর প্রতিটি পৃথক উদাহরণের সাথে সম্পর্কিত কিছু ডেটা উপস্থাপন করতে চান তবে একবার সঞ্চিত পরিবর্তন করা যায় না। স্থির এবং উদাহরণ কী শব্দের ব্যবহার আপনার নকশার প্রয়োজন এবং সেই ডেটা ডোমেনে কী উপস্থাপন করে তার উপর নির্ভর করে depends যদি ডেটা শ্রেণীর উদাহরণগুলিতে ব্যবহার করা হয় তবে প্রতিটি বস্তুর জন্য স্বতন্ত্র অনুলিপি / মেমরি রেফারেন্সের প্রয়োজন নেই। এর জন্য আমাদের ঘোষণায় বা কনস্ট্রাক্টারে চূড়ান্ত পরিবর্তনশীল সূচনা করতে হবে its এটি যদি সেগুলির মধ্যে দুটিতে না করা হয় তবে সংকলনের সময় ত্রুটি দেখাবে। একবার সূচনা করার পরে, আপনি যদি একটি মান পুনর্নির্দিষ্ট করার চেষ্টা করেন তবে আপনি একটি সংকলন সময় ত্রুটি পাবেন। স্থিতিশীল চূড়ান্ত ভেরিয়েবলগুলি ব্যবহার করুন যেখানে ক্লাসের সমস্ত দৃষ্টান্তের মধ্যে ডেটা ভাগ করা হবে এবং আপনি কেবল তথ্যটি পড়তে চান। উদাহরণস্বরূপ চূড়ান্ত পরিবর্তনশীল আপনি যদি শ্রেণীর প্রতিটি পৃথক উদাহরণের সাথে সম্পর্কিত কিছু ডেটা উপস্থাপন করতে চান তবে একবার সঞ্চিত পরিবর্তন করা যায় না। স্থির এবং উদাহরণ কী শব্দের ব্যবহার আপনার নকশার প্রয়োজন এবং সেই ডেটা ডোমেনে কী উপস্থাপন করে তার উপর নির্ভর করে depends যদি ডেটা শ্রেণীর উদাহরণগুলিতে ব্যবহার করা হয় তবে প্রতিটি বস্তুর জন্য স্বতন্ত্র অনুলিপি / মেমরি রেফারেন্সের প্রয়োজন নেই। এটি যদি তাদের দুটির মধ্যে না হয়ে থাকে তবে সংকলনের সময় ত্রুটি দেখাবে। একবার সূচনা করার পরে, আপনি যদি একটি মান পুনর্নির্দিষ্ট করার চেষ্টা করেন তবে আপনি একটি সংকলন সময় ত্রুটি পাবেন। স্থিতিশীল চূড়ান্ত ভেরিয়েবলগুলি ব্যবহার করুন যেখানে ক্লাসের সমস্ত দৃষ্টান্তের মধ্যে ডেটা ভাগ করা হবে এবং আপনি কেবল তথ্যটি পড়তে চান। উদাহরণস্বরূপ চূড়ান্ত পরিবর্তনশীল আপনি যদি শ্রেণীর প্রতিটি পৃথক উদাহরণের সাথে সম্পর্কিত কিছু ডেটা উপস্থাপন করতে চান তবে একবার সঞ্চিত পরিবর্তন করা যায় না। স্থির এবং উদাহরণ কী শব্দের ব্যবহার আপনার নকশার প্রয়োজন এবং সেই ডেটা ডোমেনে কী উপস্থাপন করে তার উপর নির্ভর করে depends যদি ডেটা শ্রেণীর উদাহরণগুলিতে ব্যবহার করা হয় তবে প্রতিটি বস্তুর জন্য স্বতন্ত্র অনুলিপি / মেমরি রেফারেন্সের প্রয়োজন নেই। এটি যদি তাদের দুটির মধ্যে না হয়ে থাকে তবে সংকলনের সময় ত্রুটি দেখাবে। একবার সূচনা করার পরে, আপনি যদি একটি মান পুনর্নির্দিষ্ট করার চেষ্টা করেন তবে আপনি একটি সংকলন সময় ত্রুটি পাবেন। স্থিতিশীল চূড়ান্ত ভেরিয়েবলগুলি ব্যবহার করুন যেখানে ক্লাসের সমস্ত দৃষ্টান্তের মধ্যে ডেটা ভাগ করা হবে এবং আপনি কেবল তথ্যটি পড়তে চান। উদাহরণস্বরূপ চূড়ান্ত পরিবর্তনশীল আপনি যদি শ্রেণীর প্রতিটি পৃথক উদাহরণের সাথে সম্পর্কিত কিছু ডেটা উপস্থাপন করতে চান তবে একবার সঞ্চিত পরিবর্তন করা যায় না। স্থির এবং উদাহরণ কী শব্দের ব্যবহার আপনার নকশার প্রয়োজন এবং সেই ডেটা ডোমেনে কী উপস্থাপন করে তার উপর নির্ভর করে depends যদি ডেটা শ্রেণীর উদাহরণগুলিতে ব্যবহার করা হয় তবে প্রতিটি বস্তুর জন্য স্বতন্ত্র অনুলিপি / মেমরি রেফারেন্সের প্রয়োজন নেই। স্থিতিশীল চূড়ান্ত ভেরিয়েবলগুলি ব্যবহার করুন যেখানে ক্লাসের সমস্ত দৃষ্টান্তের মধ্যে ডেটা ভাগ করা হবে এবং আপনি কেবল তথ্যটি পড়তে চান। উদাহরণস্বরূপ চূড়ান্ত পরিবর্তনশীল আপনি যদি শ্রেণীর প্রতিটি পৃথক উদাহরণের সাথে সম্পর্কিত কিছু ডেটা উপস্থাপন করতে চান তবে একবার সঞ্চিত পরিবর্তন করা যায় না। স্থির এবং উদাহরণ কী শব্দের ব্যবহার আপনার নকশার প্রয়োজন এবং সেই ডেটা ডোমেনে কী উপস্থাপন করে তার উপর নির্ভর করে depends যদি ডেটা শ্রেণীর উদাহরণগুলিতে ব্যবহার করা হয় তবে প্রতিটি বস্তুর জন্য স্বতন্ত্র অনুলিপি / মেমরি রেফারেন্সের প্রয়োজন নেই। স্থিতিশীল চূড়ান্ত ভেরিয়েবলগুলি ব্যবহার করুন যেখানে ক্লাসের সমস্ত দৃষ্টান্তের মধ্যে ডেটা ভাগ করা হবে এবং আপনি কেবল তথ্যটি পড়তে চান। উদাহরণস্বরূপ চূড়ান্ত পরিবর্তনশীল আপনি যদি শ্রেণীর প্রতিটি পৃথক উদাহরণের সাথে সম্পর্কিত কিছু ডেটা উপস্থাপন করতে চান তবে একবার সঞ্চিত পরিবর্তন করা যায় না। স্থির এবং উদাহরণ কী শব্দের ব্যবহার আপনার নকশার প্রয়োজন এবং সেই ডেটা ডোমেনে কী উপস্থাপন করে তার উপর নির্ভর করে depends যদি ডেটা শ্রেণীর উদাহরণগুলিতে ব্যবহার করা হয় তবে প্রতিটি বস্তুর জন্য স্বতন্ত্র অনুলিপি / মেমরি রেফারেন্সের প্রয়োজন নেই। স্থির এবং উদাহরণ কী শব্দের ব্যবহার আপনার নকশার প্রয়োজন এবং সেই ডেটা ডোমেনে কী উপস্থাপন করে তার উপর নির্ভর করে depends যদি ডেটা শ্রেণীর উদাহরণগুলিতে ব্যবহার করা হয় তবে প্রতিটি বস্তুর জন্য স্বতন্ত্র অনুলিপি / মেমরি রেফারেন্সের প্রয়োজন নেই। স্থির এবং উদাহরণ কী শব্দের ব্যবহার আপনার নকশার প্রয়োজন এবং সেই ডেটা ডোমেনে কী উপস্থাপন করে তার উপর নির্ভর করে depends যদি ডেটা শ্রেণীর উদাহরণগুলিতে ব্যবহার করা হয় তবে প্রতিটি বস্তুর জন্য স্বতন্ত্র অনুলিপি / মেমরি রেফারেন্সের প্রয়োজন নেই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.