আমি কিছুটা সরবরাহিত উত্তরগুলি প্রসারিত করছি (যেহেতু তারা এখন পর্যন্ত প্রোগ্রামিং ভাষা তৈরির দৃশ্যের পিছনে বড় চিত্রের যত্ন নেওয়ার পরিবর্তে একটি বিশেষ ভাষা প্রোগ্রামিংয়ে মনোনিবেশ করে তাদের নিজস্ব "কৃত্রিম পরিভাষা" বা মনোনিবেশ করে) , অর্থাৎ যখন জিনিসগুলি টাইপ-সুরক্ষা বনাম স্মৃতি বিবেচনার ফলে পার্থক্য আসে:
ইন্ট বুলিয়ান নয়
বিবেচনা
boolean bar = true;
System.out.printf("Bar is %b\n", bar);
System.out.printf("Bar is %d\n", (bar)?1:0);
int baz = 1;
System.out.printf("Baz is %d\n", baz);
System.out.printf("Baz is %b\n", baz);
আউটপুট সহ
Bar is true
Bar is 1
Baz is 1
Baz is true
২ য় লাইনে জাভা কোডটি (bar)?1:0
ব্যাখ্যা করে যে বার ( বুলিয়ান ) সুস্পষ্টভাবে কোনও int- তে রূপান্তরিত (কাস্ট করা) হতে পারে না । আমি এটিকে জেভিএমের পিছনে বাস্তবায়নের বিশদ বর্ণনা করার জন্য নয়, তবে এটি উল্লেখ করতে চাই যে নিম্ন স্তরের বিবেচনার ক্ষেত্রে (মেমরির আকার হিসাবে) ধরণের সুরক্ষার চেয়ে মানগুলি পছন্দ করতে হবে। বিশেষত যদি সেই ধরণের সুরক্ষা সত্যই / সম্পূর্ণরূপে বুলিয়ান প্রকার হিসাবে ব্যবহার না করা হয় যেখানে চেক আকারে করা হয়
যদি মান {0,1 \ হয় তবে বুলেয়ান প্রকারে কাস্ট করুন, অন্যথায় একটি ব্যতিক্রম ছুঁড়ে দিন।
সব ঠিক যে state 0,1 state <{-2 ^ 31, .., 2 ^ 31 -1 state। ওভারকিলের মতো মনে হচ্ছে, তাই না? প্রকারের সুরক্ষা ব্যবহারকারীর সংজ্ঞায়িত প্রকারগুলিতে সত্যই গুরুত্বপূর্ণ, আদিমদের অন্তর্ভুক্ত inালাইয়ের ক্ষেত্রে নয় (যদিও সর্বশেষে প্রথমটিতে অন্তর্ভুক্ত করা হয়েছে)।
বাইটগুলি কোনও ধরণের বা বিট নয়
মনে রাখবেন যে স্মৃতিতে আপনার পরিবর্তনশীল {0,1 range এর পরিসীমা থেকে এখনও কমপক্ষে একটি বাইট বা একটি শব্দ (নিবন্ধকের আকারের উপর ভিত্তি করে xbit) দখল করবে যদি না বিশেষভাবে যত্ন নেওয়া হয় (উদাহরণস্বরূপ মেমরিতে চমৎকারভাবে প্যাক করা - 8 "বুলিয়ান" বিট 1 বাইট - পিছনে এবং পিছনে)।
অতিরিক্ত মান প্যাকিং (যেমন বিট শিফট বা গাণিতিক ব্যবহার করে) এর চেয়ে প্রকারের সুরক্ষা (যেমন কোনও নির্দিষ্ট ধরণের বাক্সে মোড়ানোর / মুড়ানোর ক্ষেত্রে) পছন্দকে প্রাধান্য দিয়ে, আরও কার্যকরভাবে বেশি স্মৃতি অর্জন করার চেয়ে কম কোড লেখার ক্ষেত্রে কেউ কার্যকরভাবে বেছে নেয়। (অন্যদিকে একজন সর্বদা একটি কাস্টম ব্যবহারকারী প্রকার সংজ্ঞায়িত করতে পারে যা বুলিয়ান থেকে মূল্যবান নয় এমন সমস্ত রূপান্তরকে সহজতর করবে)।
কীওয়ার্ড বনাম প্রকার
শেষ অবধি, আপনার প্রশ্নটি কীওয়ার্ড বনাম প্রকারের সাথে তুলনা করা । আমি বিশ্বাস করি কেন বা কীভাবে আপনি কীওয়ার্ডগুলি ( আদিম হিসাবে চিহ্নিত " আদিম হিসাবে ) পছন্দ করতে (অন্য সংখ্যার কীওয়ার্ড শ্রেণি ব্যবহার করে সাধারণ যৌগিক ব্যবহারকারী-সংজ্ঞাযোগ্য ক্লাস ) বা অন্য কথায় কার্যকারিতা পাবেন তা ব্যাখ্যা করা গুরুত্বপূর্ণ I
boolean foo = true;
বনাম
Boolean foo = true;
প্রথম "জিনিস" (প্রকার) বাড়ানো যাবে না (উপশ্রেণিত) এবং কারণ ছাড়াই নয়। কার্যকরভাবে আদিম এবং মোড়ানো শ্রেণীর জাভা পরিভাষা সহজেই ইনলাইন ভ্যালুতে অনুবাদ করা যেতে পারে (একটি শিরোনাম বা একটি ধ্রুবক যখন সংস্থাপক দ্বারা সরাসরি প্রতিস্থাপিত হয় যখনই প্রতিস্থাপন করা সম্ভব হয় বা যদি না হয় - তবে মানটি মোড়ানোর ক্ষেত্রে ফলব্যাক)।
তুচ্ছ কারণে অপ্টিমাইজেশন অর্জন করা হয়:
"কম রানটাইম কাস্টিং অপারেশন => আরও গতি।"
এ কারণেই যখন প্রকৃত প্রকারের অনুক্রমটি সম্পন্ন হয় এটি প্রয়োজনীয় (তবে এখনও রূপান্তরিত / intoালাই)
সুতরাং, বুলিয়ান এবং বুলিয়ান মধ্যে পার্থক্য হুবহু সংকলন এবং রানটাইমের মধ্যে (কিছুটা দূরে কিন্তু প্রায় উদাহরণ হিসাবে বনাম গেটক্লাস () )।
অবশেষে, অটোবক্সিং আদিমদের চেয়ে ধীর
জাভা অটোবক্সিং করতে পারে এই বিষয়টি লক্ষ্য করুন কেবল একটি "সিনট্যাকটিক চিনি"। এটি কোনও কিছুর গতি দেয় না, কেবল আপনাকে কম কোড লেখার অনুমতি দেয়। এটাই. প্রকারের তথ্য ধারকটিতে ingালাই এবং মোড়ানো এখনও সঞ্চালিত হয়। পারফরম্যান্সের কারণে গাণিতিকগুলি বেছে নিন যা সর্বদা টাইপ সুরক্ষা বাস্তবায়নের জন্য টাইপ তথ্য সহ শ্রেণীর দৃষ্টান্ত তৈরির অতিরিক্ত গৃহকর্মকে বাদ দেয়। ধরণের সুরক্ষার অভাব হ'ল দাম আপনি কার্যকারিতা অর্জনের জন্য প্রদান করেন। বুলিয়ান-মূল্যবান এক্সপ্রেশন সহ কোডের জন্য সুরক্ষা টাইপ করুন (যখন আপনি কম লিখবেন এবং অতএব অন্তর্নিহিত কোড) অন্যথায় প্রবাহ নিয়ন্ত্রণের জন্য উদাহরণস্বরূপ গুরুত্বপূর্ণ।