জাভাতে একটি দীর্ঘ সূচনা করুন


213

আদিম ডেটা প্রকার - ওরাকল ডক বলেছেন পরিসীমা longজাভা হয় -9,223,372,036,854,775,808থেকে 9,223,372,036,854,775,807। তবে আমি যখন আমার গ্রহনে এই জাতীয় কিছু করি

long i = 12345678910;

এটি আমার The literal 12345678910 of type int is out of rangeত্রুটি দেখায় ।

2 টি প্রশ্ন আছে।

1) আমি longমানটি দিয়ে কীভাবে শুরু করব 12345678910?

2) টাইপের ডিফল্ট অনুসারে সমস্ত সংখ্যার আক্ষরিক int?


এবং কিভাবে একটি দীর্ঘ সূচনা সম্পর্কে?
ওল্ফগ্যাং ফাহল

1
@ ওল্ফগাংফাহল এর জন্য একই বিধি Long- অটো-বক্সিংয়ের কারণে আপনি যেসব ক্ষেত্রে অটো-বক্সিং ব্যবহার করতে পারবেন না সেগুলি Long i = 12345678910Lব্যবহার করতে বা ব্যবহার Long i = Long.valueOf(12345678910L)করতে পারেন।
ডোরিয়ান গ্রে

উত্তর:


422
  1. আপনি যোগ করা উচিত L: long i = 12345678910L;
  2. হ্যাঁ.

বিটিডাব্লু: এটি বড় হাতের এল হতে হবে না, তবে লোয়ার কেস 1অনেক সময় বিভ্রান্ত হয় :)।


3
কারও ক্ষেত্রে যদি কেউ ভাবছিলেন: 0x200000000L
হেক্সের

@ ভিক্টর লং.ভ্যালুওফ (দীর্ঘ) একটি দীর্ঘ ফিরিয়ে দেয়, কোনও আদিম দীর্ঘ নয়। এমবিআইডি এর সমাধান অটো-বক্সিংয়ের উপর নির্ভর করা এড়ানো যায়।
gouessej

@ user149408 সম্ভবত আপনার অর্থ 0x20000000L?
প্লুটো

2
@ প্লুটো 0x20000000Lকাজ করবে তবে এখনও int(32-বিট পূর্ণসংখ্যার) প্রতিনিধিত্ব করতে পারে , এভাবে 0x20000000কাজ করবে ঠিকই। 0x200000000Lএই সীমানাটি ভঙ্গ করে, চলার Lপ্রয়োজনীয়তা তৈরি করে।
ব্যবহারকারী 149408

58
  1. আপনি যোগ করতে হবে Lসংখ্যা শেষে চরিত্র জাভা একটি দীর্ঘ যেমন চিনতে না।

    long i = 12345678910L;
  2. হ্যাঁ.

দেখুন আদিম ডেটা প্রকার যা বলে "একটি পূর্ণসংখ্যা আক্ষরিক দীর্ঘ ধরনের হলে এটা চিঠি এল বা ঠ দিয়ে শেষ হয়; অন্যথায় এটি টাইপ int- হয়।"


39

আপনার Lমতো শেষে বড় হাতের অক্ষর যুক্ত করা দরকার

long i = 12345678910L;

একই সঙ্গে ভাসা জন্য সত্য হয় 3.0f

যা আপনার উভয় প্রশ্নের উত্তর দেওয়া উচিত


15

দীর্ঘ সূচনা করার জন্য আপনাকে শেষে "এল" সংযোজন করতে হবে।
এটি হয় বড় হাতের বা ছোট হাতের অক্ষর হতে পারে।

সমস্ত সংখ্যার মান পূর্বনির্ধারিত int। এমনকি আপনি যখন byteকোনও পূর্ণসংখ্যার সাথে কোনও অপারেশন করেন , byteপ্রথমে প্রচার করা হয় intএবং তারপরে কোনও অপারেশন করা হয়।

এটা চেষ্টা কর

byte a = 1; // declare a byte
a = a*2; //  you will get error here

কারণ আপনি ভুল পান 2ডিফল্টরূপে হয় int
অত: পর আপনি সংখ্যাবৃদ্ধি করার চেষ্টা করছেন byteসঙ্গে int। অতএব ফলাফল টাইপকেস্ট করা হয় intযা এগুলিতে পুনরায় বরাদ্দ করা যায় না byte

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