c# অবজ জাভা এবং সি#একটি int এবং একটি ইন্টিগ্রার মধ্যে পার্থক্য কি?




জাভা ক্লাস কি (20)

জাভা:

int , double , long , byte , float , double , short , boolean , char - primitives। ভাষা দ্বারা সমর্থিত মৌলিক তথ্য প্রকার ধরে রাখার জন্য ব্যবহৃত হয়। আদিম ধরনের বস্তু অনুক্রমের অংশ নয়, এবং তারা বস্তুর উত্তরাধিকারী হয় না। এটি একটি পদ্ধতির রেফারেন্স দ্বারা পাস করতে পারে।

Double , Float , Long , Integer , Short , Byte , Character , এবং Boolean , টাইপ রেপারস, java.lang প্যাকেজযুক্ত। সংখ্যাসূচক টাইপ মোড়ানোগুলি কন্সট্রাক্টরগুলিকে সংজ্ঞায়িত করে যা কোনও বস্তুর একটি প্রদত্ত মান থেকে নির্মাণ করা বা তার মানটির স্ট্রিং উপস্থাপনাকে সংজ্ঞায়িত করে। বস্তু ব্যবহার করে গণনার সবচেয়ে সহজ এমনকি একটি overhead যোগ করতে পারেন।

জেডকে 5 এর সাথে শুরু করে, জাভা দুটি খুব সহায়ক বৈশিষ্ট্য অন্তর্ভুক্ত করেছে: অটোবক্সিং এবং অটোনবক্সিং। অটোবক্সিং / আনবক্সিং ব্যাপকভাবে সরল এবং কোডগুলিকে স্ট্রিমলাইন করে যা আদিম প্রকারকে বস্তুতে রূপান্তর করতে হবে এবং এর বিপরীতে।

নির্মাতাদের উদাহরণ:

Integer(int num)
Integer(String str) throws NumberFormatException
Double(double num)
Double(String str) throws NumberFormatException

বক্সিং / আনবক্সিং উদাহরণ:

class ManualBoxing {
        public static void main(String args[]) {
        Integer objInt = new Integer(20);  // Manually box the value 20.
        int i = objInt.intValue();  // Manually unbox the value 20
        System.out.println(i + " " + iOb); // displays 20 20
    }
}

Autoboxing / autounboxing উদাহরণ:

class AutoBoxing {
    public static void main(String args[]) {
        Integer objInt = 40; // autobox an int
        int i = objInt ; // auto-unbox
        System.out.println(i + " " + iOb); // displays 40 40
    }
}

পিএস হার্বার্ট Schildt এর বই একটি রেফারেন্স হিসাবে গ্রহণ করা হয়।

আমি জোয়েল স্পলস্কি জুড়ে সফ্টওয়্যারে আরও জোয়েল পড়ছিলাম যখন কোনও নির্দিষ্ট প্রোগ্রামার সম্পর্কে কিছু বলার ছিল যা জাভা / সি # (বস্তু ভিত্তিক প্রোগ্রামিং ভাষাগুলিতে) এর মধ্যে একটি int এবং একটি Integer সম্পর্কে পার্থক্য বুদ্ধিমান।

তাহলে পার্থক্য টা কি?


সি # এ, int শুধুমাত্র System.String জন্য একটি উপনাম , System.Double স্ট্রিং। স্ট্রিং, System.Double জন্য দ্বিগুণ System.String ডাবল ইত্যাদি ...

ব্যক্তিগতভাবে আমি int, স্ট্রিং, ডাবল ইত্যাদি পছন্দ করি কারণ তাদের কোনও using System; প্রয়োজন নেই using System; বিবৃতি :) একটি মূর্খ কারণ, আমি জানি ...


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

একটি আদিম পরিবর্তনশীল জড়িত কোন অপারেশন সবসময় একটি নতুন মান প্রদান করে। অন্য দিকে, বস্তু রেফারেন্স দ্বারা কাছাকাছি পাস করা হয়। কেউ যুক্তি দিতে পারে যে বস্তুর বিন্দু (AKA রেফারেন্স) মূল্যের পাশেও গৃহীত হচ্ছে, তবে সামগ্রীগুলি নেই।


এই জাভাটির জন্য ইতিমধ্যে উত্তর দেওয়া হয়েছে, এখানে সি # উত্তর রয়েছে:

"Integer" C # এবং "int" তে বৈধ প্রকারের নাম নয় সিস্টেম.আইন্ট্রি 3 এর জন্য কেবল একটি উপনাম। এছাড়াও, জাভা (বা C ++) এর বিপরীতে, C # তে কোন বিশেষ আদিম ধরনের নেই, C # (int সহ) একটি প্রকারের প্রতিটি উদাহরণ একটি বস্তু। এখানে কিছু বিক্ষোভকারী কোড রয়েছে:

void DoStuff()
{
    System.Console.WriteLine( SomeMethod((int)5) );
    System.Console.WriteLine( GetTypeName<int>() );
}

string SomeMethod(object someParameter)
{
    return string.Format("Some text {0}", someParameter.ToString());
}

string GetTypeName<T>()
{
    return (typeof (T)).FullName;
}

int আদিম পরিবর্তনশীল ঘোষণা করা হয়

e.g. int i=10;

Integer ক্লাস Integer এর রেফারেন্স পরিবর্তনশীল তৈরি করতে ব্যবহৃত হয়

Integer a = new Integer();

আমি এখানে পোস্ট করব কারণ অন্য কয়েকটি পোস্ট C # এর সাথে সামান্য ভুল।

সঠিক: System.Int32 জন্য একটি উপনাম।
ভুল: float System.Float জন্য একটি উপনাম নয়। float , কিন্তু System.Single জন্য

মূলত, int সি প্রোগ্রামিং প্রোগ্রামের একটি সংরক্ষিত শব্দ এবং System.Int32 মানের প্রকারের জন্য একটি উপনাম।

ফ্লোট এবং ফ্লোট একই নয় তবে, ' float ' এর জন্য সঠিক সিস্টেম টাইপটি System.Single। এমন কিছু ধরণের রয়েছে যা কীওয়ার্ড সংরক্ষিত করেছে যা সরাসরি টাইপ নামগুলির সাথে মিলছে বলে মনে হচ্ছে না।

সি # তে ' int ' এবং ' System.Int32 ', বা অন্য কোন জোড়া বা কীওয়ার্ড / সিস্টেমের ধরনগুলির মধ্যে কোন পার্থক্য নেই, System.Int32 সংজ্ঞায়িত করার ব্যতীত। Enums দিয়ে আপনি স্টোরেজ আকার ব্যবহার করতে পারেন এবং এই ক্ষেত্রে আপনি শুধুমাত্র সংরক্ষিত শব্দ ব্যবহার করতে পারেন, এবং সিস্টেম রানটাইম টাইপের নামটি ব্যবহার করতে পারবেন না।

ভেতরের ভেতরের মানটি স্ট্যাকে, মেমরিতে বা রেফারেন্সকৃত হিপ বস্তু হিসাবে সংরক্ষণ করা হবে প্রসঙ্গে এবং আপনি কীভাবে এটি ব্যবহার করেন তার উপর নির্ভর করে।

একটি পদ্ধতিতে এই ঘোষণা:

int i;

System.Int32 টাইপের একটি পরিবর্তনশীল i সংজ্ঞায়িত করে, একটি নিবন্ধন বা স্ট্যাকে থাকা, অপ্টিমাইজেশনের উপর নির্ভর করে। একটি ধরন (গঠন বা বর্গ) একই ঘোষণা একটি সদস্য ক্ষেত্র সংজ্ঞায়িত করে। একটি পদ্ধতি আর্গুমেন্ট তালিকাতে একই ঘোষণায় একটি স্থানীয় পরিবর্তনশীল হিসাবে একই স্টোরেজ বিকল্পগুলির সাথে একটি পরামিতি সংজ্ঞায়িত করে। (মনে রাখবেন যে এই অনুচ্ছেদের বৈধ নয় যদি আপনি মিশ্রণে ইথারেটর পদ্ধতিগুলি টেনে আনতে শুরু করেন, এইগুলি সম্পূর্ণ ভিন্ন প্রাণী)

একটি হিপ বস্তু পেতে, আপনি বক্সিং ব্যবহার করতে পারেন:

object o = i;

এই হিপ উপর i বিষয়বস্তু একটি বক্সেড কপি তৈরি করা হবে। আইএল-তে আপনি হিপ বস্তুর সরাসরি পদ্ধতিগুলি অ্যাক্সেস করতে পারেন, কিন্তু C # এ আপনাকে এটিতে একটি int- এ ফেরত দিতে হবে যা অন্য কপি তৈরি করবে। সুতরাং, হিপ উপর বস্তু একটি নতুন int ভ্যালু একটি নতুন বক্সেড অনুলিপি তৈরি ছাড়া সহজেই সি # মধ্যে পরিবর্তন করা যাবে না। (উহু, এই অনুচ্ছেদের সব যে সহজে পড়া হয় না।)


জাভা 1.5 এবং autoboxing একটি গুরুত্বপূর্ণ "কুইক্ক" রয়েছে যা ইন্টিগ্রার বস্তুর তুলনা করার সময় আসে।

জাভাতে, 1২8 থেকে 1২7 মানগুলির সাথে ইন্টিগ্রার অবজেক্টগুলি অপরিবর্তনীয় (অর্থাৎ, একটি নির্দিষ্ট পূর্ণসংখ্যা মানের জন্য, ২3 বলুন, আপনার প্রোগ্রামের মাধ্যমে সমস্ত সংখ্যার বস্তু তাত্ক্ষণিকভাবে 23 পয়েন্টের সাথে একই একই বস্তুর সাথে যুক্ত)।

উদাহরণ, এই সত্য ফিরে:

Integer i1 = new Integer(127);
Integer i2 = new Integer(127);
System.out.println(i1 == i2); //  true

এই মিথ্যা ফেরত যদিও:

Integer i1 = new Integer(128);
Integer i2 = new Integer(128);
System.out.println(i1 == i2); //  false

== রেফারেন্স দ্বারা তুলনা করে (ভেরিয়েবল একই বস্তুর দিকে নির্দেশ করে)।

আপনি যা JVM ব্যবহার করছেন তার উপর নির্ভর করে এই ফলাফলটি ভিন্ন হতে পারে বা নাও হতে পারে। জাভা 1.5 এর জন্য স্পেসিফিকেশন অটোবক্সিংয়ের জন্য ইন্টিগ্রার (-128 থেকে 127) সর্বদা একই আবর্জনা বস্তুর বাক্স প্রয়োজন।

একটি সমাধান? =) Integer.equals () পদ্ধতিটি কখনই ইন্টিগ্রার বস্তুর তুলনা করার সময় ব্যবহার করা উচিত।

System.out.println(i1.equals(i2)); //  true

bexhuff.com এ আরো তথ্য bexhuff.com এ উদাহরণ


আমি উপরে দেওয়া চমৎকার উত্তরগুলিতে যোগ দেব এবং বক্সিং এবং আনবক্সিং সম্পর্কে কথা বলি এবং কিভাবে এটি জাভাতে প্রযোজ্য হবে (যদিও C # এটিও আছে)। আমি শুধু জাভা শব্দভাণ্ডার ব্যবহার করব, কারণ আমি ওর সাথে আরো বেশি আগ্রহ দেখছি।

উত্তর উল্লিখিত হিসাবে, int শুধুমাত্র একটি সংখ্যা ( আনবক্সড টাইপ বলা হয়), যেখানে Integer একটি বস্তু (যা সংখ্যা রয়েছে, তাই একটি বাক্সযুক্ত টাইপ)। জাভা পদগুলিতে, এর মানে হল ( int পদ্ধতিগুলি কল করতে সক্ষম না হওয়া ছাড়া), আপনি সংগ্রহগুলি ( List , Map , ইত্যাদি) এ int বা অন্যান্য অ-বস্তু ধরনের সংরক্ষণ করতে পারবেন না। তাদের সংরক্ষণ করার জন্য, আপনাকে প্রথমে তাদের সংশ্লিষ্ট বাক্সযুক্ত প্রকারে তাদের বাক্সে আপ করতে হবে।

জাভা 5 এর পরে অটো-বক্সিং এবং অটো-অক্সবক্সিং নামে কিছু আছে যা দৃশ্যের পিছনে বক্সিং / আনবক্সিংয়ের অনুমতি দেয়। তুলনা এবং বিপরীতে: জাভা 5 সংস্করণ:

Deque<Integer> queue;

void add(int n) {
    queue.add(n);
}

int remove() {
    return queue.remove();
}

জাভা 1.4 বা তার আগে (কোন জেনেরিক্স নেই):

Deque queue;

void add(int n) {
    queue.add(Integer.valueOf(n));
}

int remove() {
    return ((Integer) queue.remove()).intValue();
}

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

আশাকরি এটা সাহায্য করবে!


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

একটি জাভা প্রোগ্রামে স্ট্রিং লিটারালগুলি হিপ মেমরির একটি পৃথক অংশে সংরক্ষণ করা হয়, শুধুমাত্র আক্ষরিকের জন্য একটি উদাহরণ, সেই উদাহরণগুলি পুনঃব্যবহারের জন্য মেমরি সংরক্ষণ করতে


আপনি কি কখনও আগে প্রোগ্রাম করেছেন (int) আপনার ভেরিয়েবলগুলির জন্য সেট করতে পারেন এমন আদিম প্রকারগুলির মধ্যে একটি (কেবল গৃহস্থালি, ভাসা, ...)।

কিন্তু ইন্টিগ্রারটি একটি রপার ক্লাস যা আপনি এটির একটি ভেরিয়েবলের উপর কিছু ফাংশন করতে ব্যবহার করতে পারেন (যেমন স্ট্রিং বা ভিসের বিপরীতে রূপান্তর করুন ...), তবে মনে রাখবেন যে মোড়ানো ক্লাসগুলির পদ্ধতিগুলি স্ট্যাটিক রয়েছে তাই আপনি তাদের ব্যবহার করতে পারেন Integer ক্লাস একটি উদাহরণ তৈরি ছাড়া যে কোন সময়। একটি পুনরাবৃত্তি হিসাবে:

int x;
Integer y; 

এক্স এবং ই উভয় প্রকারের int এর উভয় ভেরিয়েবল তবে Y ইন্টিগ্রেশন ক্লাসের দ্বারা আবৃত এবং আপনার ব্যবহৃত বিভিন্ন পদ্ধতি রয়েছে তবে আমি আপনাকে কেবল এটি করতে পারেন এমন ইন্টিগ্রার wrapper ক্লাসের কিছু ফাংশন কল করতে হবে।

Integer.toString(x);

তবে সচেতন হোন যে এক্স এবং ই উভয়টি কোর্ট কিন্তু যদি আপনি তাদের একটি আদিম টাইপ হিসাবে ব্যবহার করতে চান তবে সাধারণ ফর্মটি ব্যবহার করুন (এক্স সংজ্ঞায়িত করার জন্য ব্যবহৃত)।


int লাইব্রেরি ফাংশন c # পূর্বনির্ধারিত হয় তবে জাভাতে আমরা Integer অবজেক্ট তৈরি করতে পারি


আচ্ছা, জাভাতে একটি int একটি আদিম এবং একটি পূর্ণসংখ্যা একটি বস্তু। অর্থ, যদি আপনি একটি নতুন সংখ্যার তৈরি করেছেন:

Integer i = new Integer(6);

আপনি আমি কিছু পদ্ধতি কল করতে পারে:

String s = i.toString();//sets s the string representation of i

একটি int সঙ্গে যখন:

int i = 6;

আপনি কোন পদ্ধতিতে এটি কল করতে পারবেন না, কারণ এটি কেবল একটি আদিম। তাই:

String s = i.toString();//will not work!!!

একটি ত্রুটি উত্পাদন করবে, কারণ int একটি বস্তু নয়।

ইন্ট জাভা (কয়েকটি গৃহস্থালি এবং কিছু অন্যান্য সহ) মধ্যে কয়েক primitives এক। আমি 100% নিশ্চিত নই, তবে আমি মনে করি যে ইন্টিগ্রার বস্তুটির কম বা কম পরিমাণে কেবল একটি সম্পত্তির সাথে সম্পৃক্ত করার পদ্ধতি রয়েছে এবং সেই সম্পত্তিটির সাথে ইন্টারঅ্যাক্ট করতে (যেমন স্টোরিং () পদ্ধতি)। সুতরাং ইন্টিগ্রার একটি int- এর সাথে কাজ করার একটি অভিনব উপায় (ঠিক যেমন স্ট্রিং অক্ষরের একটি গোষ্ঠীর সাথে কাজ করার একটি অভিনব উপায়)।

আমি জানি জাভা সি নয়, কিন্তু যেহেতু আমি সি তে প্রোগ্রাম না করেছি, তাই আমি নিকটতম উত্তরটি পেতে পারি। আশাকরি এটা সাহায্য করবে!

ইন্টিগ্রেশন বস্তু javadoc

Integer Ojbect বনাম int primitive তুলনা


উভয় ভাষায় (জাভা এবং সি #) int 4-বাইট স্বাক্ষরিত পূর্ণসংখ্যা।

জাভা ভিন্ন, সি # উভয় স্বাক্ষরিত এবং স্বাক্ষরিত পূর্ণসংখ্যা মান প্রদান করে। যেমন জাভা এবং সি # বস্তু বস্তু ভিত্তিক, এই ভাষাগুলিতে কিছু ক্রিয়াকলাপ সরাসরি রান সময় প্রদত্ত নির্দেশাবলীতে মানচিত্র করে না এবং তাই কিছু ধরণের বস্তুর অংশ হিসাবে সংজ্ঞায়িত করা প্রয়োজন।

সি # System.Int32 প্রদান করে যা মেমরির একটি অংশ ব্যবহার করে একটি মান টাইপ যা System.Int32 রেফারেন্স টাইপের সাথে সম্পর্কিত।

java java.lang.Integer যা একটি রেফারেন্স প্রকার int তে অপারেটিং প্রদান করে। Integer পদ্ধতিগুলি সরাসরি সময় নির্দেশনা চালানোর জন্য সরাসরি সংকলিত করা যাবে না। সুতরাং আমরা ইন্টিগ্রারের দৃষ্টান্তে রূপান্তর করার জন্য একটি int মান বাক্সে এবং এমন কিছু পদ্ধতি ব্যবহার করি যা কিছু ধরণের উদাহরণ parseInt() valueOf() toString() , parseInt() , valueOf() ইত্যাদি)।

C # ভেরিয়েবল int- তে System.Int32.Any বোঝায়। মেমরিতে 4-বাইটের মানটি একটি আদিম int হিসাবে ব্যাখ্যা করা যেতে পারে, যা System.Int32 এর উদাহরণ দ্বারা ম্যানিপুলেশন করা যেতে পারে। তাই int- সিস্টেম.আইন্ট্রো.এর জন্য একটি উপনাম। পূর্ণসংখ্যা ব্যবহার করার সময়- int.Parse() , int.ToString() ইত্যাদি সম্পর্কিত পদ্ধতিগুলি, ইন্টিগ্রেটরটি এফসিএল int.ToString() কম্পাইল করা হয়। ইন্টিগ্রেট int.ToString() int.Parse() , int.ToString() int.Parse() মতো সম্পর্কিত পদ্ধতিগুলিকে কল করে।


আমার জ্ঞান অনুযায়ী জাভাতে আপনি যদি শিখেন তবে, যখন আপনি int লিখেন; তারপর java জেনেরিক এ এটি Integer a = new Integer() কোড কম্পাইল করবে। সুতরাং, জেনেরিকস Integer ব্যবহৃত হয় না তবে int ব্যবহার করা হয়। তাই সেখানে এত পার্থক্য আছে।


জাভাতে, int টাইপ একটি আদিম ডাটা টাইপ, যেখানে Integer টাইপটি একটি বস্তু।

সি # এ, int টাইপটি একটি ডাটা টাইপ যা System.Int32 হিসাবে একই। একটি integer (ঠিক কোনও অন্যান্য মান ধরনের) একটি বস্তুর মধ্যে ("মোড়ানো") বক্স করা যাবে।


জাভা int তে একটি আদিম ডেটা টাইপ এবং Integer হেল্পার ক্লাস হয়, এটি একটি ডেটা টাইপের জন্য অন্য রূপে রূপান্তর করার জন্য ব্যবহার করা হয়।

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

double doubleValue = 156.5d;
Double doubleObject  = new Double(doubleValue);
Byte myByteValue = doubleObject.byteValue ();
String myStringValue = doubleObject.toString();

প্রিমিয়াম ডেটা প্রকারগুলি দ্রুততম উপলব্ধ মেমরি সংরক্ষণ করে যেখানে হেল্পার ক্লাস জটিল এবং হেপ মেমরিতে স্টোর।

"ডেভিড Gassner" জাভা অপরিহার্য প্রশিক্ষণ থেকে রেফারেন্স।


জাভা এবং সি # এ একটি int এবং ইন্টিগ্রার দুটি ভিন্ন পদ যা বিভিন্ন জিনিসের প্রতিনিধিত্ব করার জন্য ব্যবহৃত হয়। এটি এমন আদিম ডেটা প্রকারগুলির মধ্যে একটি যা একটি পরিবর্তনশীলকে ঠিক করা যেতে পারে যা ঠিকভাবে সঞ্চয় করতে পারে। এক সময়ে তার ঘোষণা টাইপ এক মান।

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

int number = 7;

যেখানে int ডেটাটাইপটি ভেরিয়েবল নাম্বারে নির্ধারিত হয় যা মান সাতটি ধারণ করে। সুতরাং একটি int শুধুমাত্র একটি আদিম একটি বস্তু নয়।

একটি Integer স্ট্যাটিক পদ্ধতির একটি আদিম ডেটা টাইপের জন্য একটি রপার ক্লাস। এটি এমন একটি পদ্ধতির জন্য একটি যুক্তি হিসাবে ব্যবহার করা যেতে পারে যা একটি বস্তুর প্রয়োজন হয়, যেখানে int- কে একটি পদ্ধতিতে একটি যুক্তি হিসাবে ব্যবহার করা যেতে পারে যা পূর্ণসংখ্যা মানের প্রয়োজন হয়, যা গাণিতিক অভিব্যক্তিটির জন্য ব্যবহার করা যেতে পারে।

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

Integer number = new Integer(5);

একটি int পরিবর্তনশীল একটি 32 বিট স্বাক্ষরিত পূর্ণসংখ্যা মান ঝুলিতে। একটি পূর্ণসংখ্যা (পুঁজি I সহ) (শ্রেণী) টাইপ পূর্ণসংখ্যা, বা নিল একটি বস্তুর একটি রেফারেন্স ধারণ করে।

জাভা স্বয়ংক্রিয়ভাবে দুই মধ্যে casts; ইন্টিগ্রার থেকে int পর্যন্ত যখন ইন্টেজার বস্তুটি কোনও int অপারেটরের একটি যুক্তি হিসাবে সংঘটিত হয় বা একটি int ভেরিয়েবলে নির্ধারিত হয়, বা একটি int মানকটি একটি পূর্ণসংখ্যা পরিবর্তনশীলকে বরাদ্দ করা হয়। এই ঢালাই বক্সিং / unboxing বলা হয়।

যদি একটি পূর্ণসংখ্যা ভেরিয়েবল রেফারেন্সিং নাল অস্পষ্ট হয়, স্পষ্টভাবে বা implicitly, একটি NullPointerException নিক্ষেপ করা হয়।


01. পূর্ণসংখ্যা নিল হতে পারে। কিন্তু int নাল হতে পারে না।

Integer value1 = null; //OK

int value2 = null      //Error

02. শুধুমাত্র কোন সংগ্রহের ক্লাসে র্যাপার ক্লাস টাইপ মানগুলি পাস করতে পারে।

(রেপার ক্লাস - বুলিয়ান, ক্যারেক্টার, বাইট, শর্ট, ইন্টিগ্রার, লং, ফ্লোট, ডাবল)

List<Integer> element = new ArrayList<>();
int valueInt = 10;
Integer  valueInteger = new Integer(value);
element.add(valueInteger);

কিন্তু সাধারণত আমরা সংগ্রহ ক্লাসে আদিম মান যোগ করুন? বিন্দু 02 সঠিক?

List<Integer> element = new ArrayList<>();
element.add(5);

হ্যাঁ 02 সঠিক, beacouse autoboxing হয় autoboxing.

Autoboxing স্বয়ংক্রিয় রূপান্তর যে জাভা কম্পাইলার আদিম টাইপ এবং তাদের সংশ্লিষ্ট wrapper বর্গ মধ্যে তোলে।

তারপর 5 autoboxing দ্বারা পূর্ণসংখ্যা মান হিসাবে রূপান্তর।


জাভাতে, 'int' টাইপ একটি আদিম, যেখানে 'ইন্টিগার' টাইপ একটি বস্তু।

সি # তে, 'int' টাইপটি System.Int32 মত একই এবং এটি একটি মান টাইপ (অর্থাৎ জাভা 'int' এর মত আরো)। একটি পূর্ণসংখ্যা (ঠিক কোনও অন্যান্য মান ধরনের) একটি বস্তুর মধ্যে ("মোড়ানো") boxed করা যাবে।

অবজেক্ট এবং প্রাইমাইটিভের মধ্যে পার্থক্য কিছুটা এই প্রশ্নটির ব্যবধানের বাইরে, কিন্তু সংক্ষেপে:

বস্তুগুলি পলিমারফিজমের জন্য সুবিধা প্রদান করে, রেফারেন্স দ্বারা গৃহীত হয় (বা আরো সঠিকভাবে মান দ্বারা প্রেরিত রেফারেন্স থাকে), এবং heap থেকে বরাদ্দ করা হয়। বিপরীতভাবে, primitives মান দ্বারা পাস করা হয় যে অপরিবর্তনীয় ধরনের এবং প্রায়ই stack থেকে বরাদ্দ করা হয়।





int