জেএলএসে একটি বিভাগ পাওয়া যাবে: .412.4.2 ।
বিস্তারিত সূচনা প্রক্রিয়া:
E। পরবর্তী, ক্লাসের ভেরিয়েবল ইনিশিয়েলজার এবং ক্লাসের স্ট্যাটিক ইনিশিয়ালাইজার অথবা ইন্টারফেসের ফিল্ড ইনিশিয়ালাইজারকে পাঠ্যক্রম অনুসারে কার্যকর করুন, যদিও তারা চূড়ান্ত শ্রেণীর ভেরিয়েবল এবং ইন্টারফেসের ক্ষেত্রগুলি বাদ দেয় যার মানগুলি সংকলিত -সময়ের ধ্রুবকগুলি প্রথমে শুরু করা হয়
সুতরাং তিনটি স্থিতিশীল ভেরিয়েবল একের পর এক পাঠ্যক্রম অনুসারে আরম্ভ করা হবে।
সুতরাং
static A obj = new A();
//num1 = 1, num2 = 1;
static int num1;
//this is initilized first, see below.
static int num2=0;
//num1 = 1, num2 = 0;
আমি যদি আদেশটি পরিবর্তন করি:
static int num1;
static int num2=0;
static A obj = new A();
ফলাফল হবে 1,1
।
নোট করুন যে এটি static int num1;
কোনও পরিবর্তনশীল আরম্ভকারী নয় কারণ ( §8.3.2 ):
যদি কোনও ফিল্ড ডিক্লেয়ারারে একটি ভেরিয়েবল ইনিশিয়ালাইজার থাকে, তবে এটিতে ঘোষিত ভেরিয়েবলের কাছে একটি অ্যাসাইনমেন্ট (§15.26) শব্দার্থ রয়েছে, এবং: যদি ডিক্লেয়ারটি একটি শ্রেণি ভেরিয়েবলের (অর্থাৎ, একটি স্ট্যাটিক ক্ষেত্রের) জন্য হয়, তবে চলক আরম্ভকারীটি হয় ক্লাস আরম্ভ করা হয়, যখন মূল্যায়ন এবং অ্যাসাইনমেন্ট ঠিক একবার সঞ্চালিত
এবং ক্লাসটি তৈরি হওয়ার সাথে সাথে এই শ্রেণীর ভেরিয়েবলটি আরম্ভ করা হয়। এটি প্রথম ঘটে ( §4.12.5 )।
প্রোগ্রামের প্রতিটি ভেরিয়েবলের মানটি ব্যবহারের আগে অবশ্যই একটি মান থাকতে হবে: প্রতিটি শ্রেণি ভেরিয়েবল, উদাহরণ পরিবর্তনশীল, বা অ্যারে উপাদান তৈরি হওয়ার সাথে সাথে একটি ডিফল্ট মান দিয়ে শুরু করা হয় (§15.9, §15.10): টাইপ বাইটের জন্য, ডিফল্ট মান শূন্য, যা, (বাইট) 0 এর মান। সংক্ষিপ্ত প্রকারের জন্য, ডিফল্ট মান শূন্য, যা (সংক্ষিপ্ত) 0 এর মান। টাইপ ইন্টের জন্য, ডিফল্ট মান শূন্য, যেটি, 0 দীর্ঘ টাইপের জন্য, ডিফল্ট মান শূন্য, যে 0L হয়। টাইপ ফ্লোটের জন্য, ডিফল্ট মানটি ধনাত্মক শূন্য, অর্থাৎ 0.0f হয়। টাইপ ডাবলের জন্য, ডিফল্ট মানটি ধনাত্মক শূন্য, অর্থাৎ 0.0d হয়। টাইপ চরের জন্য, ডিফল্ট মান হ'ল শূন্য অক্ষর, অর্থাৎ '\ u0000'। টাইপ বুলিয়ানের জন্য, ডিফল্ট মানটি মিথ্যা। সমস্ত রেফারেন্স ধরণের (§4.3) জন্য, ডিফল্ট মানটি শূন্য হয়।