जावा में एक लंबी शुरुआत


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
@WolfgangFahl के लिए समान नियम Long- ऑटो-बॉक्सिंग के कारण, आप उन मामलों के लिए Long i = 12345678910Lउपयोग या उपयोग कर सकते हैं , Long i = Long.valueOf(12345678910L)जहाँ आप ऑटो-बॉक्सिंग का उपयोग नहीं कर सकते हैं।
डोरियन ग्रे

जवाबों:


422
  1. आप जोड़ना चाहिए L: long i = 12345678910L;
  2. हाँ।

BTW: यह एक ऊपरी मामला L होना नहीं है, लेकिन निचला मामला 1कई बार उलझन में है :)।


3
बस अगर कोई सोच रहा था: वही हेक्स के लिए जाता है, जैसे0x200000000L
user149408

@Victor Long.valueOf (लंबा) एक लॉन्ग लौटाता है, न कि एक आदिम लंबा। MByD का समाधान ऑटो-बॉक्सिंग पर भरोसा करने से बचता है।
गौसेज

@ user149408 शायद आपका मतलब है 0x20000000L?
प्लूटो

2
@ प्लूटो 0x20000000Lकाम करेगा लेकिन फिर भी int(32-बिट पूर्णांक) द्वारा प्रतिनिधित्व किया जा सकता है , इस प्रकार 0x20000000यह भी काम करेगा। 0x200000000Lउस सीमा को तोड़ता है, जिससे ट्रेलिंग Lआवश्यक हो जाती है।
15:14 बजे user149408

58
  1. Lजावा को लंबे समय तक पहचानने के लिए आपको चरित्र को संख्या के अंत में जोड़ना होगा ।

    long i = 12345678910L;
  2. हाँ।

आदिम डेटा प्रकार देखें जो कहता है कि "पूर्णांक शाब्दिक प्रकार लंबा होता है यदि यह अक्षर L या l के साथ समाप्त होता है, अन्यथा यह प्रकार int का है।"


39

आपको Lइस तरह अंत में अपरकेस जोड़ना होगा

long i = 12345678910L;

उसी के साथ तैरने के लिए सच हो जाता है 3.0f

जिसे आपके दोनों सवालों का जवाब देना चाहिए


15

लंबे समय तक आरंभ करने के लिए आपको "L" को अंत तक जोड़ना होगा।
यह या तो अपरकेस या लोअरकेस हो सकता है।

सभी संख्यात्मक मान डिफ़ॉल्ट रूप से हैं int। यहां तक ​​कि जब आप किसी byteभी पूर्णांक के साथ किसी भी ऑपरेशन को करते हैं, byteतो पहले उसे बढ़ावा दिया जाता है intऔर फिर कोई भी ऑपरेशन किया जाता है।

इसे इस्तेमाल करे

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

आपको 2डिफ़ॉल्ट के कारण त्रुटि मिलती है int
इसलिए आप के byteसाथ गुणा करने की कोशिश कर रहे हैं int। इसलिए परिणाम टाइपकास्ट हो जाता intहै जिसे वापस नहीं सौंपा जा सकता है byte

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.