জাভাতে পূর্ণসংখ্যা এবং ইন্টের মধ্যে পার্থক্য কী?


248

উদাহরণস্বরূপ আপনি কেন এটি করতে পারেন:

int n = 9;

কিন্তু না:

Integer n = 9;

এবং আপনি করতে পারেন:

Integer.parseInt("1");

কিন্তু না:

int.parseInt("1");

35
পূর্ণসংখ্যা শ্রেণি,
অন্তর্নিহিত

24
আপনি করতে পারেন না Integer n = 9;autoboxing কারণে (যতক্ষণ না আপনি জাভার একটি খুব পুরানো সংস্করণ ব্যবহার করছেন)
Alderath

উত্তর:


319

intএকটি আদিম ধরণের। প্রকারের ভেরিয়েবলগুলি intআপনি যে পূর্ণসংখ্যার প্রতিনিধিত্ব করতে চান তার জন্য আসল বাইনারি মান সংরক্ষণ করে। int.parseInt("1")অর্থে দেখা যায় না কারণ intহয় না কোনো পদ্ধতি নেই একটি বর্গ এবং সেইজন্য।

Integerএকটি শ্রেণি, জাভা ভাষার কোনওর চেয়ে আলাদা নয়। টাইপ ভেরিয়েবল Integerদোকান রেফারেন্স থেকে Integerশুধু অন্য কোন রেফারেন্স (বস্তু) ধরনের সঙ্গে যেমন বস্তু,। ক্লাস থেকে Integer.parseInt("1")স্থির পদ্ধতিতে কল (লক্ষ্য করুন যে এই পদ্ধতিটি আসলে একটি দেয় এবং একটি নয় )।parseIntIntegerintInteger

আরও সুনির্দিষ্টভাবে বলতে গেলে, Integerএকক ক্ষেত্রের ধরণের একটি শ্রেণি int। এই শ্রেণিটি ব্যবহার করা হয় যেখানে আপনাকে intঅন্য যে কোনও অবজেক্টের মতো আচরণ করতে হবে যেমন জেনেরিক প্রকার বা পরিস্থিতি যেখানে আপনার অযোগ্যতা প্রয়োজন।

নোট করুন যে জাভাতে প্রতিটি আদিম ধরণের একটি সমমানের মোড়কের ক্লাস থাকে:

  • byte হয়েছে Byte
  • short হয়েছে Short
  • int হয়েছে Integer
  • long হয়েছে Long
  • boolean হয়েছে Boolean
  • char হয়েছে Character
  • float হয়েছে Float
  • double হয়েছে Double

মোড়কের ক্লাসগুলি অবজেক্ট ক্লাস থেকে উত্তরাধিকার সূত্রে প্রাপ্ত এবং আদিম নয়। সুতরাং এটি অবজেক্ট রেফারেন্স সহ বা জেনারিক্সের সাথে সংগ্রহগুলিতে ব্যবহার করা যেতে পারে।

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


6
ইন C#সব ধরনের তথ্য "alias লেখা" আছে এবং int.Parse()(যদিও এটা সত্যিই কাজ করে না) জানার আছে
Vahid আমিরি

22
@ ভিএসজি ২৪ ... তবে এটি একটি জাভা প্রশ্ন ছিল এবং এটি একটি জাভা উত্তর। C#এখানে সম্পূর্ণ অপ্রাসঙ্গিক।
দারখোগ

3
ভাল উদাহরণ হতে পারে: সংকলন ত্রুটি: তালিকা <
আইটি

অতিরিক্ত জ্ঞান সর্বদা উপকৃত হয়
সিমিট শর্মা

1
আমি নতুন জিনিস শিখতে পছন্দ করি, বিশেষত যখন জ্ঞানটি বর্তমান বিষয়ের সাথে সম্পর্কিত হয়। ধন্যবাদ ওয়াহিদ
পল অলিভার

30

পূর্ণসংখ্যা একটি শ্রেণি এবং int একটি আদিম ধরণের।

এই লিঙ্কগুলিতে পড়ুন:


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

11
হেই, আমি মনে করি এটি আসলে বিপরীত। "ইনট একটি আদিম ধরণ" আপনাকে কিছু বলবে না, যদি আপনি না জানেন তবে আদিম ধরণ কী। (এবং যদি আপনি এটি করেন তবে আপনি ইতিমধ্যে পূর্ণসংখ্যা এবং পূর্ণসংখ্যার মধ্যে পার্থক্যটি জানেন) এবং "লিঙ্ক 1" এবং "লিঙ্ক 2" লেবেলযুক্ত দুটি লিঙ্কে পাঠককে প্রেরণ করা বেশ অস্বাস্থ্যকর, বিশেষত কেবল প্রাসঙ্গিক বিভাগগুলি উদ্ধৃত করার তুলনায়।
স্টিভ বেনেট

7

একটি পূর্ণসংখ্যার আদিম টাইপ ইন্টের জন্য কেবল একটি মোড়ক। এটি আপনাকে জীবনকে আরও সহজ করার জন্য পূর্ণসংখ্যা শ্রেণীর সমস্ত ক্রিয়াকলাপ ব্যবহার করার অনুমতি দেয়।

আপনি যদি জাভাতে নতুন হন তবে আপনার যা কিছু প্রশংসা করা উচিত তা হ'ল জাভা ডকুমেন্টেশন। উদাহরণস্বরূপ, আপনি পূর্ণসংখ্যা বর্গ সম্পর্কে যে কোনও কিছু জানতে চান সেটি বিশদে ডকুমেন্টেড।

এটি পূর্ণসংখ্যা শ্রেণীর জন্য ডকুমেন্টেশনের বাইরে রয়েছে:

পূর্ণসংখ্যা শ্রেণি একটি বস্তুর মধ্যে আদিম প্রকারের মানটির মান দেয়। টাইপ ইন্টিজারের একটি অবজেক্টে একটি একক ক্ষেত্র থাকে যার প্রকার ইন্টের হয়।


7
এটি কিছুটা পয়েন্ট মিস করে। উদাহরণস্বরূপ, Integerশ্রেণি হিসাবে এটি পাত্রে সংরক্ষণ করা যেতে পারে (আদিম ধরণের থেকে পৃথক)।
অলিভার চার্লসওয়ার্থ

6

কোনও int ভেরিয়েবল একটি 32 বিট স্বাক্ষরিত পূর্ণসংখ্যার মান ধারণ করে। একটি পূর্ণসংখ্যা (মূলধন I সহ) এর সাথে (শ্রেণি) টাইপ পূর্ণসংখ্যার অবজেক্টের শূন্য থাকে বা বাতিল হয়।

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

যদি একটি পূর্ণসংখ্যার পরিবর্তনশীল রেফারেন্সিং নালটি বাক্সবিন্যাস করা হয়, সুস্পষ্টভাবে বা স্পষ্টভাবে, একটি নালপয়েন্টার এক্সসেপশন নিক্ষেপ করা হয়।

(উপরের লেখায় "ভেরিয়েবল" শব্দের অর্থ স্থানীয় ভেরিয়েবল, ক্ষেত্র বা পরামিতি)


5

Integerজাভাতে মোড়কের ধরণটিকে বোঝায় যেখানে intএকটি আদিম প্রকার। জাভাতে আদিম ডেটা ধরণের ব্যতীত সমস্ত কিছুই কার্যকরভাবে জাভা বোঝায় এমন একটি বস্তু যেমন উচ্চ দক্ষতাযুক্ত বিশুদ্ধ অবজেক্ট-ভিত্তিক প্রোগ্রামিং ভাষা is আপনার যদি প্রয়োজন হয় তবে সমস্ত আদিম ধরণের জাভাতে মোড়কের ধরণ হিসাবেও উপলব্ধ। আদিম ধরণের সাথে আপনার কিছু পারফরম্যান্স সুবিধা থাকতে পারে এবং তাই প্রয়োজনীয়তার সময় কেবল র‍্যাপার প্রকারগুলিই ব্যবহার করা উচিত।

নীচে হিসাবে আপনার উদাহরণে।

Integer n = 9;

ধ্রুবকটি স্বয়ংক্রিয়ভাবে বাক্সযুক্ত9 হচ্ছে ( এবং এরপরে স্বয়ংক্রিয়ভাবে ঘটে ) তাই আপনি বিবৃতিটি এর মতো এবং এটিও ব্যবহার করতে পারেন । এটি আসলে বিবরণের মাধ্যমে অর্জন করা হয়েছেauto-boxingunboxingjava 5IntegerInteger n = new Integer(9)Integer.valueOf(9).intValue();


3

int একটি আদিম ধরণের এবং কোনও অবজেক্ট নয়। তার মানে এটির সাথে যুক্ত কোনও পদ্ধতি নেই। পূর্ণসংখ্যা পদ্ধতিগুলির সাথে একটি বস্তু (যেমন পার্সেন্ট)।

নতুন জাভা সহ অটো বক্সিং (এবং আনবক্সিং) এর কার্যকারিতা রয়েছে। এর অর্থ হ'ল সংকলকটি যেখানে প্রয়োজন সেখানে Integer.valueOf (int) বা পূর্ণসংখ্যা.সিন্টভ্যালু () সন্নিবেশ করবে। তার মানে এটি লেখা সম্ভব

Integer n = 9;

যা হিসাবে ব্যাখ্যা করা হয়

Integer n = Integer.valueOf(9);

3

পূর্ণসংখ্যা একটি মোড়কের ক্লাস / অবজেক্ট এবং ইনট আদিম ধরণের। আপনি যখন কোনও সংগ্রহে ইন্ট ভ্যালু সংরক্ষণ করতে চান তখন এই পার্থক্যটি বিশাল ভূমিকা পালন করে, কারণ তারা কেবলমাত্র বস্তুকে মান হিসাবে গ্রহণ করে (jdk1.4 অবধি)। JDK5 এর পরে অটোবক্সিংয়ের কারণে এটি সম্পূর্ণ ভিন্ন গল্প।


5
জেডি কে 5 এছাড়াও কেবলমাত্র অবজেক্ট গ্রহণ করে; এটি কেবলমাত্র অটোবক্সিং সংকলককে স্বয়ংক্রিয়ভাবে কল করতে Integer.valueOf(i)বা আপনার Integer.intValue()জন্য অনুমতি দেয় । Collection<int>এখনও কাজ করবে না। সুতরাং এটি সম্পূর্ণ আলাদা গল্প নয় - এটি একই গল্প, কেবলমাত্র কিছুটা শর্টহ্যান্ড নিয়ে।
ysavit

সম্মত হয়। দুঃখিত, আমার শব্দটি এর প্রতিফলন নাও করতে পারে।
কোসা

3

জাভা-তে একটি প্রাথমিক তথ্য টাইপ হয় যখন পূর্ণসংখ্যা হেল্পার শ্রেণি হয়, এটি একটি ডেটা টাইপকে অন্যটিতে রূপান্তর করতে ব্যবহার করা হয়।

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

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

প্রাথমিক তথ্য প্রকারগুলি হ'ল সাহায্যকারী শ্রেণি জটিল এবং হিপ মেমরিতে সঞ্চয় করে দ্রুততম উপলব্ধ মেমরি সংরক্ষণ করে।

"ডেভিড গ্যাসনার" জাভা প্রয়োজনীয় প্রশিক্ষণ থেকে রেফারেন্স।


2

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

আপনি এর সাথে ওওপি ধারণাগুলিও ব্যবহার করতে পারেন Integer। উদাহরণস্বরূপ, আপনি জেনেরিকের জন্য পূর্ণসংখ্যার (যেমন ) ব্যবহার করতে পারেন ।Collection<Integer>


2

এটি জাভা থেকে নেওয়া হয়েছে : সম্পূর্ণ রেফারেন্স, নবম সংস্করণ

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

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

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


1

জাভা কোড রানটাইম, নিখুত int আদিম প্রকার (গুলি) সহ যোগ করা হয়েছে float, boolইত্যাদি কিন্তু তারা সেখানে সঙ্গে বরাবর আসতে রাপার শ্রেনীর যাতে প্রয়োজনে আপনি রূপান্তর এবং অনেক ইউটিলিটি যে তাদের সদস্য হিসাবে আসে বরাবর মান জাভা অবজেক্ট হিসেবে তাদের ব্যবহার করতে পারেন ফাংশন (যেমন Integer.parseInt("1"))।


1

intIntegerজাভাতে একটি রেফারেন্স বা র্যাপার টাইপ (শ্রেণি) থাকাকালীন এটি একটি আদিম ডেটা টাইপ ।

পরে java 1.5যা ধারণা পরিচয় করিয়ে autoboxing এবং আনবক্সিং আপনি আরম্ভ করতে পারেন উভয় intবা Integerভালো।

int a= 9
Integer a = 9 // both valid After Java 1.5.

কেন Integer.parseInt("1");কিন্তু না int.parseInt("1");??

Integerjdkগ্রন্থাগারে সংজ্ঞায়িত একটি ক্লাস এবং parseInt()এটি একটি স্ট্যাটিক পদ্ধতি Integerশ্রেণীর অন্তর্গত

সুতরাং, Integer.parseInt("1");জাভা সম্ভব। তবে intজাভাতে এটি আদিম ধরণ (মূলশব্দের মতো অনুমান)। সুতরাং, আপনি কল করতে পারবেন না parseInt()সঙ্গে int

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