ओरेकल "आदिम डेटा प्रकार" पृष्ठ में , यह उल्लेख करता है कि जावा 8 अहस्ताक्षरित किलों और लोंगो के लिए समर्थन जोड़ता है:
int
: डिफ़ॉल्ट रूप से,int
डेटा प्रकार एक 32-बिट हस्ताक्षरित दो का पूरक पूर्णांक है, जिसका न्यूनतम मूल्य −2 31 और अधिकतम मूल्य 2 31 data1 है। जावा एसई 8 और बाद में, आपint
एक 32-बिट पूर्णांक का प्रतिनिधित्व करने के लिए डेटा प्रकार का उपयोग कर सकते हैं , जिसका न्यूनतम मान 0 और अधिकतम मान 2 32 .1 है। का प्रयोग करेंInteger
उपयोग करने के लिए वर्गint
एक अहस्ताक्षरित पूर्णांक के रूप में डेटा प्रकार। अधिक जानकारी के लिए अनुभाग द क्लास क्लासेस देखें। की तरह स्टेटिक तरीकोंcompareUnsigned
,divideUnsigned
आदि में जोड़ा गया हैInteger
अहस्ताक्षरित पूर्णांकों के लिए अंकगणितीय आपरेशनों का समर्थन करने के वर्ग।
long
:long
डेटा प्रकार 64-बिट दो का पूरक पूर्णांक है। हस्ताक्षरितlong
का न्यूनतम मूल्य 632 63 और अधिकतम मूल्य 2 63 value1 है। जावा एसई 8 में और बाद में, आपlong
डेटा प्रकार का उपयोग कर सकते हैं एक अहस्ताक्षरित 64-बिट का प्रतिनिधित्व करने के लिएlong
, जिसका न्यूनतम मूल्य 0 और अधिकतम 2 64 −1 है। इस डेटा प्रकार का उपयोग तब करें जब आपको इंट द्वारा प्रदान किए गए मूल्यों की तुलना में व्यापक मूल्यों की आवश्यकता हो।Long
वर्ग भी तरीकों की तरह होता हैcompareUnsigned
,divideUnsigned
आदि अहस्ताक्षरित के लिए अंकगणितीय आपरेशनों का समर्थन करने केlong
।
हालाँकि, मुझे अहस्ताक्षरित लंबी या पूर्णांक घोषित करने का कोई तरीका नहीं है। निम्न कोड, उदाहरण के लिए, "शाब्दिक सीमा से बाहर है" का संकलक त्रुटि संदेश देता है (मैं जावा 8 का उपयोग कर रहा हूं, निश्चित रूप से), जब यह सीमा में होना चाहिए (निर्दिष्ट मूल्य 2 64 641 है) :
public class Foo {
static long values = 18446744073709551615L;
public static void main(String[] args){
System.out.println(values);
}
}
तो, क्या कोई अहस्ताक्षरित int या लंबे समय तक घोषित करने का कोई तरीका है?