CodeGym /Java Course /জাভা মাল্টিথ্রেডিং /অপারেটরের অগ্রাধিকার

অপারেটরের অগ্রাধিকার

জাভা মাল্টিথ্রেডিং
লেভেল 1 , পাঠ 1
বিদ্যমান
অপারেটর অগ্রাধিকার - 1

"হাই, বিলাবো!"

"বিলাবো তার বন্ধুকে বরণ করে খুশি!"

"আজ বিলাবো আপনাকে অপারেটরের অগ্রাধিকার সম্পর্কে বলবে। তবে প্রথমে সে আপনাকে অপারেটরদের সম্পর্কে বলবে।"

"আপনি কি এই অপারেটরদের কথা বলছেন?"

"আসলে, আপনি ইতিমধ্যে তাদের সাথে পরিচিত। আপনি হয়তো জানেন না যে তাদের অপারেটর বলা হয়।"

"উদাহরণস্বরূপ, বলুন আমাদের কাছে  c = a + b; "

"এটির দুটি অপারেটর রয়েছে: একটি সংযোজন অপারেটর এবং একটি অ্যাসাইনমেন্ট অপারেটর।"

"অন্য কথায়, অপারেটরগুলি কেবল গাণিতিক চিহ্ন? যেমন গুণ, ভাগ এবং যোগ?"

"হ্যাঁ, এটা সত্য। তবে পার্থক্য আছে।"

"আমি আপনার জন্য অপারেটরগুলিকে সংজ্ঞায়িত করব না: একটি সংজ্ঞা আপনাকে আরও স্মার্ট করে তুলবে না। তাদের কর্মক্ষেত্রে দেখা আরও ভাল। অপারেটরদের কয়েকটি গ্রুপে বিভক্ত করা যেতে পারে, যা আমরা এখন পরীক্ষা করব।"

1) " গাণিতিক অপারেটর "

প্রতীক উদাহরণ নাম বর্ণনা (এটি কী করে)
+ a + b সংযোজন অপারেটর সংযোজন অপারেটর।
- c - d বিয়োগ অপারেটর প্রথম থেকে দ্বিতীয় সংখ্যা বিয়োগ করে।
* a * t গুন অপারেটর দুটি সংখ্যাকে গুণ করে।
/ a / b বিভাগ অপারেটর প্রথম সংখ্যাটিকে দ্বিতীয় দ্বারা ভাগ করে।
% c % d প্রথম সংখ্যাটিকে দ্বিতীয় দ্বারা ভাগ করে। প্রথম সংখ্যাটিকে দ্বিতীয় দ্বারা ভাগ করার পরে অবশিষ্টাংশ গণনা করে৷
- -a ইউনারি মাইনাস ভেরিয়েবলের চিহ্নটিকে এর বিপরীতে পরিবর্তন করে।
প্লাস থেকে বিয়োগ, এবং বিয়োগ থেকে প্লাস।
+ +a ইউনারি প্লাস কিছুই পরিবর্তন করে না। এটি ইউনারি মাইনাস অপারেটরের প্রশংসা করার জন্য যুক্ত করা হয়েছিল। এটা শুধু চেহারা জন্য.

"আমি এগুলিকে স্কুল থেকে চিনতে পেরেছি। আমার ফার্মওয়্যারে স্কুলের কোর্স অন্তর্ভুক্ত রয়েছে।"

"কিন্তু, সেই শতাংশ চিহ্নের সাথে কি আছে, এক ধরণের জাদুকর?"

"এটি " ভাগের পরে অবশিষ্ট " অপারেটর। যদি 11 কে 5 দ্বারা ভাগ করা হয়, তাহলে আমরা 2 এবং অবশিষ্ট 1 পাব। এই 1টি 11 % 5 লিখে পাওয়া যাবে;"

"আপনি যখন জাভাতে পূর্ণসংখ্যাকে ভাগ করেন, ফলাফলটিও একটি পূর্ণসংখ্যা হয়। বিভাগ অপারেশনের অবশিষ্টাংশগুলিকে উপেক্ষা করা হয়। যদি আমরা 8 কে 5 দ্বারা ভাগ করি, আমরা 1 পাই।"

অভিব্যক্তি ফলাফল
19 / 10 1 যদি আমরা 19 কে 10 দিয়ে ভাগ করি, তাহলে ফলাফল 1 হবে বাকি 9 এর সাথে।
19 % 10 9 যদি আমরা 19 কে 10 দিয়ে ভাগ করি, তাহলে ফলাফল 1 হবে বাকি 9 এর সাথে।
2 / 5 0 যদি আমরা 2 কে 5 দিয়ে ভাগ করি, তাহলে  ফলাফল 0 হবে বাকি 2 এর সাথে।
16 % 2 0 যদি আমরা 16 কে 2 দ্বারা ভাগ করি, তাহলে ফলাফল 8 হবে বাকি 0 এর সাথে।

"কিন্তু পৃথিবীতে আমাদের বাকিটা কি দরকার?"

"ধরুন আপনাকে একটি পূর্ণসংখ্যা জোড় কিনা তা পরীক্ষা করতে হবে। তারপর আপনি লিখতে পারেন:"

if (a % 2 == 0)

"এবং আপনি যদি b বিজোড় কিনা তা পরীক্ষা করতে চান, তাহলে আপনি লিখতে পারেন:"

if (b % 2 == 1)

"অথবা d 3 দ্বারা বিভাজ্য কিনা তা পরীক্ষা করতে:"

if (d % 3 == 0)

"আকর্ষণীয়। আমি এটা মনে রাখব।"

2)  " তুলনা অপারেটর "

প্রতীক উদাহরণ নাম বর্ণনা (এটি কী করে)
< a < b থেকে কম a খ এর চেয়ে কম কিনা তা পরীক্ষা করে।
<= c <= d অপেক্ষাকৃত ছোট বা সমান c d এর থেকে কম বা সমান কিনা তা পরীক্ষা করে।
> a > b অপেক্ষা বৃহত্তর a খ এর চেয়ে বড় কিনা তা পরীক্ষা করে।
>= c >= d এর চেয়ে বড় বা সমান c d এর চেয়ে বড় বা সমান কিনা তা পরীক্ষা করে।
== i == j সমান আমি j এর সমান কিনা তা পরীক্ষা করে দেখুন।
!= a != 0 অসমান a শূন্যের সমান নয় কিনা তা পরীক্ষা করে।

"আমি ইতিমধ্যে এই সব ব্যবহার করি।"

"এবং এই অপারেটর এবং গাণিতিক অপারেটরদের মধ্যে প্রধান পার্থক্য কি?"

"যদি আমরা দুটি সংখ্যা যোগ করি, আমরা একটি সংখ্যা পাব; কিন্তু, যদি আমরা দুটি সংখ্যার তুলনা করি, আমরা সত্য বা মিথ্যা পাই।"

"এটা ঠিক। তুলনার ফলাফল হল একটি " যৌক্তিক মান " মান, যা আপনি জানেন, বুলিয়ান টাইপ দ্বারা প্রতিনিধিত্ব করা হয়। দুটি সম্ভাবনা রয়েছে: সত্য বা মিথ্যা।

"হ্যাঁ, সব পরিষ্কার। আমি ইতিমধ্যেই জানি।"

3) " লজিক্যাল অপারেটর "

প্রতীক উদাহরণ নাম বর্ণনা (এটি কী করে)
&& a && b এবং অভিব্যক্তির ফলাফল তখনই সত্য যখন a এবং b উভয়ই সত্য হয়।
|| c || d বা a বা b সত্য হলে অভিব্যক্তির ফলাফল সত্য। তাদের উভয় বা অন্তত একটি.
! !a না একটি মিথ্যা হলেই অভিব্যক্তির ফলাফল সত্য।

"লজিক্যাল অপারেটর শুধুমাত্র বুলিয়ান ভেরিয়েবল বা এক্সপ্রেশনের সাথে ব্যবহার করা যেতে পারে।"

উদাহরণ বর্ণনা
boolean a = true;
boolean b = true;if (a && b)
যদি উভয় মানই সত্য হয় তাহলে if শর্ত সত্য হয়
অন্য কথায়, a এবং b উভয়ই সত্য হলে ফলাফলটি সত্য
boolean a = true;
boolean b = false;if (a || b)
কমপক্ষে একটি মান সত্য হলে if শর্ত সত্য হয়
অন্য কথায়, যদি a বা b হয় সত্য, তবে ফলাফলটি সত্য
boolean b = false;

if (!b)

if শর্ত সত্য যদি b সত্য না হয়।
অন্য কথায়, যদি   b মিথ্যা হয় , তাহলে ফলাফলটি  সত্য
int a = 2, b = 3, c = 4;

if (a < b && a < c)
if ((a < b) && (a < c))

a যদি b এর থেকে কম হয় এবং a c এর থেকে কম হয় তবে রাশিটির ফলাফল সত্য।
a, b, এবং c হল পূর্ণসংখ্যা, কিন্তু পূর্ণসংখ্যার তুলনা করার ফলাফল হল একটি লজিক্যাল মান (সত্য, মিথ্যা), যার মানে আমরা লজিক্যাল অপারেটর ব্যবহার করতে পারি।

"আমি ইতিমধ্যে এই সব জানি।"

"সত্যি? তাহলে চলুন চালিয়ে যাই।"

4) " বিটওয়াইজ অপারেটর "

প্রতীক উদাহরণ নাম বর্ণনা (এটি কী করে)
& a & b এবং বিটওয়াইজ এবং
| c | d বা বিটওয়াইজ বা
~ ~a না Bitwise না
^ a ^ b XOR বিটওয়াইজ "এক্সক্লুসিভ বা"

" বিটওয়াইজ অপারেটররা পূর্ণসংখ্যার উপর বিট-বাই-বিট অপারেশন করে।"

"ওটা কী?"

"প্রতিটি সংখ্যাকে বিটগুলির একটি সেট হিসাবে উপস্থাপন করা হয় এবং তারপরে ফলাফলটি নিম্নরূপ গণনা করা হয়:"

"যদি উভয় সংখ্যার প্রথম বিট 1 হয়, তাহলে ফলাফলের প্রথম বিটটি 1 হবে।"

"যদি উভয় সংখ্যার দ্বিতীয় বিটটি 1 হয়, তবে ফলাফলের দ্বিতীয় বিটটি হবে 1। ইত্যাদি।"

"এটা কি সব বিটওয়াইজ অপারেটরের জন্য সত্য?"

"এটি তার চেয়ে অনেক সহজ। একটি বিটের শুধুমাত্র দুটি মান থাকতে পারে, 0 এবং 1, তাই না?"

"ঠিক আছে।"

"তাহলে 1 কে সত্য এবং 0 কে মিথ্যা মনে করুন৷ পৃথক বিটের অপারেশনগুলি তখন লজিক্যাল ক্রিয়াকলাপের সাথে প্রায় অভিন্ন হবে:"

যৌক্তিক অভিব্যক্তি বিটওয়াইজ এক্সপ্রেশন
সত্য && সত্য == সত্য 1&1 == 1
সত্য && মিথ্যা == মিথ্যা 1&0 == 0
সত্য || সত্য == সত্য 1|1 == 1
সত্য || মিথ্যা == সত্য 1|0 == 1
মিথ্যা || মিথ্যা = মিথ্যা 0|0 == 0
মিথ্যা == সত্য ~0 == 1
!সত্য == মিথ্যা ~1 == 0

"ওহ! এত সহজ।"

"হ্যাঁ, শুধু ভুলে যাবেন না যে বিটওয়াইজ অপারেশন দুটি সংখ্যা থেকে সংশ্লিষ্ট বিট ব্যবহার করে।"

"হ্যাঁ, আমার মনে আছে: একটি সংখ্যার প্রথম বিটটি দ্বিতীয়টির প্রথম বিটের সাথে জোড়া হয়, এবং ফলাফলটিও প্রথম বিটে লেখা হয়। এবং বাকি বিটের ক্ষেত্রেও একই রকম হয়।"

"তা ঠিক। তোমার কি আর কোন প্রশ্ন আছে?"

"এক্সওআর এবং 'এক্সক্লুসিভ বা' এর সাথে কী আছে?"

"এটি কেকের টুকরো: যখন মানগুলি ভিন্ন হয়, তখন এটি সত্য; যখন তারা একই হয়, এটি মিথ্যা।"

যৌক্তিক অভিব্যক্তি বিটওয়াইজ এক্সপ্রেশন
সত্য XOR সত্য == মিথ্যা 1 ^ 1 == 0
মিথ্যা XOR মিথ্যা == মিথ্যা 0 ^ 0 == 0
সত্য XOR মিথ্যা == সত্য 1 ^ 0 == 1
মিথ্যা XOR সত্য == সত্য 0 ^ 1 == 1

এখানে বিটওয়াইজ অপারেশনের আরও কয়েকটি উদাহরণ রয়েছে:

উদাহরণ বিট হিসাবে সংখ্যা বিট হিসাবে ফলাফল ফলাফল
5 & 3 0000010 1  এবং 0000001 1 0000000 1 1
7 & 2 000001 1 1 এবং 000000 1 0 00000010 2
5 | 9 00000 1 0 1  | 0000 1 00 1 00001101 13
5 ^ 9 00000 101  ^ 00001001 0000 1100 12
~9 ~ 00001001 11110110 246

"ধন্যবাদ, বিলাবো। এখন আমি জানি।"

"বিটওয়াইজ অপারেটরদের আরও একটি গ্রুপ আছে, শিফট অপারেটর:"

5) " শিফট অপারেটর "

প্রতীক উদাহরণ নাম বর্ণনা (এটি কী করে)
>> a >> b ডান স্থানান্তর a সংখ্যার বিটগুলিকে b সংখ্যা দ্বারা ডানদিকে স্থানান্তরিত করে।
<< c << d বাম স্থানান্তর c সংখ্যার বিটগুলিকে d সংখ্যা দ্বারা বাম দিকে স্থানান্তর করে।
>>> a >>> 2 স্বাক্ষরবিহীন ডান স্থানান্তর a সংখ্যার বিটগুলিকে 2 সংখ্যা দ্বারা ডানদিকে স্থানান্তরিত করে।

"এটা কি ধরনের রাস্তার জাদু?"

"এটি আসলে সব সত্যিই সহজ. এটি পরীক্ষা করে দেখুন:"

উদাহরণ বিট হিসাবে সংখ্যা বিট হিসাবে ফলাফল ফলাফল
10 >> 1 0000 101 0 >> 1 00000 101 5
10 >> 2 0000 101 0 >> 2 000000 10 2
10 << 1 0000 101 0 << 1 000 101 00 20
10 << 2 0000 101 0 << 2 00 101 000 40

"একটি সংখ্যার বিটকে 1 দ্বারা বাম দিকে স্থানান্তর করা সংখ্যাটিকে 2 দ্বারা গুণ করার সমান। দুটি সংখ্যা দ্বারা স্থানান্তর করা 4 দ্বারা গুণ করার সমতুল্য, তিনটি সংখ্যা দ্বারা - 8 দ্বারা গুণ করা ইত্যাদি।"

"ডান স্থানান্তর 2, 4, 8, 16, ইত্যাদি দ্বারা ভাগ করার সাথে মিলে যায়।"

"কিন্তু >>> এবং >> অপারেটরদের মধ্যে পার্থক্য কি?"

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

অভিব্যক্তি ফলাফল বর্ণনা
1 000 1010 >> 1 11 000 101 ঋণাত্মক সংখ্যা ঋণাত্মক থেকে যায়।
নেতিবাচক সংখ্যার জন্য, ইনকামিং বিটগুলি 1s দিয়ে পূর্ণ হয়।
1 000 1010 >> 2 111 000 10
1 000 1010 >> 3 1111 000 1
1 000 1010 >>> ১ 01 000 101 ঋণাত্মক সংখ্যা আর ঋণাত্মক নয়। নেতিবাচক সংখ্যার জন্য, ইনকামিং বিটগুলি 0s দিয়ে পূর্ণ হয়।
1 000 1010 >>> 2 001 000 10
1 000 1010 >>> 3 0001 000 1

"শিফ্টটি চক্রাকার নয়। সংখ্যার বাম বা ডান প্রান্তের বাইরে চলে যাওয়া বিটগুলিকে কেবল বাতিল করা হয়।"

6) " অ্যাসাইনমেন্ট অপারেটর "

"আমি ইতিমধ্যেই জানি অ্যাসাইনমেন্ট কী। কিন্তু আপনি 'অপারেটর' বলছেন কেন?"

"কারণ তাদের মধ্যে বেশ কিছু আছে ☺"

অপারেটর এর মানে কি
a += b; a = a + b;
a -= b; a = a - b;
a *= b; a = a * b;
a %= b; a = a % b;
a |= b; a = a | b;
a &= b; a = a & b;

"আমি মনে করি আপনি যুক্তি পেতে পারেন।"

7) " বৃদ্ধি এবং হ্রাস অপারেটর "

স্বরলিপি উদাহরণ বর্ণনা
++ a++;
++b;
সংখ্যা 1 দ্বারা বৃদ্ধি করে।
-- d--;
--i;
সংখ্যা বা চলককে 1 দ্বারা হ্রাস করে।

"ভেরিয়েবলের আগে বা পরে দুটি বিয়োগ চিহ্ন রাখার মধ্যে কোন পার্থক্য আছে?"

"হ্যাঁ, আছে, যদিও খুব বড় নয়৷ যদি এই অপারেটরগুলির মধ্যে একটির সাথে একটি ভেরিয়েবল একটি অভিব্যক্তি বা অ্যাসাইনমেন্টের অংশ হয়, তবে পার্থক্য রয়েছে৷ আমি বরং আপনাকে উদাহরণ দিয়ে দেখাতে চাই:"

উদাহরণ আসলেই কি হয় বর্ণনা
int a = 3;
int b = ++a;
int a = 3;
a = a + 1;
int b = a;
a প্রথমে 1 দ্বারা বৃদ্ধি করা হয়, এবং তারপর এটি অভিব্যক্তিতে ব্যবহৃত হয়।
int a = 3;
int b = a++;
int a = 3;
int b = a;
a = a + 1;
a প্রথমে অভিব্যক্তিতে ব্যবহৃত হয় এবং তারপর 1 দ্বারা বৃদ্ধি পায়।
int a = 3;
return a++;
int a = 3;
int result = a;
a = a + 1;
return result;
ফাংশনটি 3 প্রদান করবে, কিন্তু a এর মান 1 দ্বারা বৃদ্ধি পাবে।
int x = 5;
x = ++x + ++x;
int x = 5;
int a = x + 1;// The first term is 6
x = a;
int b = x + 1;// The second term is 7
x = b;
x = a + b;
এখানে ফলাফল হল 13। প্রথমে, x 1 দ্বারা বৃদ্ধি পাবে, এবং এই মানটি প্রথম পদটি প্রতিস্থাপন করবে, এবং তারপর x আবার 1 দ্বারা বৃদ্ধি পাবে।

"ওহ! এটা চমৎকার!"

"আমি আনন্দিত যে আপনি এটি পছন্দ করেছেন। কিন্তু, যদি কোন অভিব্যক্তি বা অ্যাসাইনমেন্ট না থাকে, তাহলে কোন পার্থক্য নেই:"

"x++ x = x + 1 এর সমতুল্য।"

"++x x = x + 1 এর সমতুল্য।"

"আমি এটা মাথায় রাখব। ধন্যবাদ, বিলাবো।"

8)  " টার্নারি অপারেটর "

"এই অপারেটরটি শুধু এক বা দুটি ভেরিয়েবল বা এক্সপ্রেশন ব্যবহার করে না। এটি একবারে তিনটি ভেরিয়েবল বা এক্সপ্রেশন ব্যবহার করে:"

স্বরলিপি সমতুল্য কোড:
a ? b : c; if (a)
b
else
c
int min = a < b ? a : b; if (a < b)
min = a;
else
min = b;
return a != null ? a.length : 0; if (a != null)
return a.length;
else
return 0;

"ওয়েল, এটা সুপার সুবিধাজনক।"

"হ্যাঁ। এবং এটি কমপ্যাক্ট এবং কোডটি পঠনযোগ্য। এটি ব্যবহার করে উপভোগ করুন!"

9) " অন্য "

"আপনার সঙ্গীত সংগ্রহ যতই সুন্দরভাবে সংগঠিত হোক না কেন, আপনাকে এখনও একটি "বিবিধ" ফোল্ডার তৈরি করতে হবে।"

"হ্যাঁ, যে কেউ কখনও সঙ্গীত শ্রেণীবদ্ধ করতে হয়েছে সম্পূর্ণরূপে একমত হবে।"

"সুতরাং, আরও তিনটি অপারেটর আছে যাদের সম্পর্কে আমি আপনাকে বলতে চাই:"

স্বরলিপি উদাহরণ বর্ণনা
() (a + b) * c বন্ধনী অপারেটরের অগ্রাধিকার বাড়ায়।
বন্ধনীর জিনিসগুলি প্রথমে কার্যকর করা হয়।
[] c [i] = c [i + 1]; সূচক দ্বারা একটি অ্যারে উপাদান পান।
. int n = a.length; " ডট অপারেটর " একটি বস্তুর ভেরিয়েবল এবং পদ্ধতি অ্যাক্সেস করে।

"এবং, পরিশেষে, এখানে একটি টেবিল যা অপারেটর অগ্রাধিকারের সংক্ষিপ্ত বিবরণ দেয়:"

অপারেটর উদাহরণ
সর্বোচ্চ অগ্রাধিকার (এই টেবিলে অপারেটরদের তাদের ক্রম অনুসারে কার্যকর করা হয়)
()
[]
.
(a + b)
c [i] = c [i] + 1
++
--
~
!
+
-
i++; ++i;
--j; a--;
~c
!f
return +a;
return -a;
*
/
%
a * b
c / d
a % b
+
-
a + b
c - d
String s = "count"+"35";
>>
<<
>>>
a >> 3
b << 2
c >>> 3
<
<=
>
>=
a < b
a <= b
c > b
c >= b
==
!=
a == 3
a != 0
& a & 7
^ a ^ b
| a | b
&& (a < b) && (a < c)
|| (b != 0) || (c != 0)
? : = a > 0 ? a : -a;
=
*=, /=, %=
-=, +=
<<=. >>=, >>>=
&=, ^=. |=
সর্বনিম্ন অগ্রাধিকার (শেষ সম্পাদিত)

 

মন্তব্য
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION