জাভাতে টার্নারি অপারেটর জাভা 7 এর পর থেকে কেবল একটি এক্সপ্রেশনকে মূল্যায়ন করে - যা জাভা 1.6 এবং এর চেয়ে কম ছিল?


109

ওরাকল সার্টিফিকেট অ্যাসোসিয়েট জাভা এসই 8 প্রোগ্রামার 1 পরীক্ষার জন্য প্রস্তুতি নিয়ে, আমি অফিসিয়াল স্টাডি গাইডের ত্রৈমাসিক অভিব্যক্তি সম্পর্কে নিম্নলিখিত অনুচ্ছেদে এসেছি:

টেরনারী এক্সপ্রেশন মূল্যায়ন
জাভা 7-এর হিসাবে, রানটাইমের সময় টেরিনারি অপারেটরের ডান হাতের এক্সপ্রেশনগুলির মধ্যে একটিরই মূল্যায়ন করা হবে। শর্ট-সার্কিট অপারেটরগুলির মতো একই উপায়ে, যদি কোনও টার্নারি অপারেটরের দুটি ডান হাতের এক্সপ্রেশন একটি পার্শ্ব প্রতিক্রিয়া সম্পাদন করে, তবে এটি রানটাইমে প্রয়োগ করা যাবে না। আসুন নীচের উদাহরণ সহ এই নীতিটি বর্ণনা করুন: [...]

এটি বলে যে দুটি এক্সপ্রেশনগুলির মধ্যে একটিরই মূল্যায়ন করা হয়, নিম্নলিখিত উদাহরণ সহ প্রদর্শিত:

int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;

এখানে, কেবল yইনক্রিমেন্ট, তবে zযেমনটি আপনি প্রত্যাশা করতেন তেমনটি হয় না।

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

সম্পাদনা: বিভ্রান্তি এড়ানোর জন্য: এটি প্রশ্নটিতে ফোটে, যেহেতু তারা 'As of Java 7' লেখেন, তখন জাভা 6 থেকে জাভা 7-এ স্যুইচ করার সময়, টের্নারি অপারেটর সম্পর্কে কি কিছু পরিবর্তন হয়েছিল?


4
আপনি কেন z বৃদ্ধি হবে আশা করবেন? এটি আমার কোনও অর্থবোধ করে না।
জিří কান্টর

15
খারাপ লেখা লিখিত বইয়ের মতো শোনা যাচ্ছে, জাভা বেজিংয়ের পরে টেরিনারি অপারেটরগুলি পরিবর্তন হয়নি, আফিম
নিমচিম্পস্কি

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

23
আসলে, আমি দেখেছি "তারিখের হিসাবে / সংস্করণ এক্স" এর অর্থ ব্যবহৃত হয়েছিল "আমরা পরীক্ষা করেছিলাম যে তারিখে / এক্স সংস্করণে এটি সত্য, তবে আমরা পূর্ববর্তী সংস্করণগুলি সম্পর্কে কিছুই বলছি না।" আমি অনুমান করছি যে এখানে অর্থ হতে পারে। (যদিও আপনি ভাবেন যে জাভার আগের সংস্করণগুলি চেক করা যথেষ্ট সহজ হবে)) যাইহোক, এটি কোনও প্রোগ্রামিংয়ের চেয়ে একটি ইংরেজী ইস্যু।
ডেভিড জেড

14
@ ডেভিডজেড: ইংলিশ ইস্যুগুলি প্রোগ্রামিংয়ের বিষয়গুলি যখন তারা আপনাকে আপনার কাজ শেষ করতে বাধা দেয়। এই কথায় কথায় কথায় কথায় মন্তব্য করা হয়েছে যে ওপি সে কী করছে এবং সময় নষ্ট করে যে কিছুই বদলেছে। প্রোগ্রামিং হ'ল যোগাযোগ, সংকলক / দোভাষী এবং যিনি পরে আপনার কোডটি বজায় রাখতে আসে তার সাথে যোগাযোগ। আমি যে সময়গুলি কিছু কোড পড়ছি তা গণনা করতে পারছি না, এবং সমস্যাটির সাথে / সম্ভবত / এর কিছু ছিল বলে অদ্ভুত কিছু বলেই থামাতে হয়েছিল, কেবল এটি কেবল খারাপভাবে "বাক্যযুক্ত" ছিল তা খুঁজে বের করতে।
jmoreno

উত্তর:


92

আমি যে বইটি এসেছি তার অন্যতম লেখক। যদিও আমি সেই নির্দিষ্ট বাক্যটি লিখিনি, আমি সম্মত হ'ল "এটি জাভা 7 এ পরীক্ষা করা হয়েছিল" was আমি অন্য একটি সংস্করণ লিখলে তা অপসারণ করতে আমি একটি নোট করব।

স্পষ্টতই, জাভা 8, 7, 6, ইত্যাদিতে টার্নারি অপারেটর একই আচরণ করেছে এবং ভবিষ্যতে যদি এটি পরিবর্তন হয় তবে আমি বেশ অবাক হব।


116

থেকে জাভা 6 JLS :

রান সময়ে শর্তসাপেক্ষ প্রকাশের প্রথম অপারেন্ড এক্সপ্রেশনটি প্রথমে মূল্যায়ন করা হয়; প্রয়োজনে আনবক্সিং রূপান্তর ফলাফলের উপর সঞ্চালিত হয়; ফলস্বরূপ বুলিয়ান মানটি দ্বিতীয় বা তৃতীয় অপারেন্ড এক্সপ্রেশনটি বেছে নিতে ব্যবহৃত হয়:

  • যদি প্রথম অপারেন্ডের মানটি সত্য হয় তবে দ্বিতীয় অপারেন্ডের এক্সপ্রেশনটি বেছে নেওয়া হয়।
  • যদি প্রথম অপারেন্ডের মানটি মিথ্যা হয় তবে তৃতীয় অপারেন্ডের এক্সপ্রেশনটি বেছে নেওয়া হবে।

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

জেএলএস সংস্করণেও 1.0 এ ফিরে যাওয়ার অনুরূপ শব্দাবলীর উপস্থিতি রয়েছে । আচরণটি জাভা 7 এ পরিবর্তিত হয়নি; অধ্যয়নের গাইডটি সবেমাত্র খারাপ শব্দযুক্ত।


2
সুতরাং উত্তরটি "জাভা 7 এর আগে এবং তার্নি অপারেটর সম্পর্কিত কোনও পার্থক্য নেই", তাই না?
ম্যাথিয়াস বদর

5
বৈধ মনে হয়। আমি লেখকদের কাছে একটি মেমো লিখেছিলাম - তাদের উত্তরটির অপেক্ষায়
রয়েছি

সংস্করণগুলির মধ্যে অপারেটরের কোডের তুলনা করে আপনি সম্ভবত একটি URL খুঁজে পেতে পারেন find যদি আপনি অদ্ভুত / কৌতূহলী হন।
স্টিভ ক্লে

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