क्या जावा का intहमेशा और हर जगह एक 32 बिट हस्ताक्षरित पूर्णांक होगा?
जवाबों:
हां, यह द जावा लैंग्वेज स्पेसिफिकेशन में परिभाषित है ।
से खंड 4.2: आदिम प्रकारों और मानों :
अभिन्न प्रकार के होते हैं
byte,short,int, औरlong, जिसका मान हैं 8 बिट, 16 बिट, 32-बिट और 64-बिट पर हस्ताक्षर किए two's-पूरक पूर्णांकों, क्रमशः, औरchar, जिनके मान 16-बिट अहस्ताक्षरित पूर्णांकों UTF-16 कोड का प्रतिनिधित्व कर रहे इकाइयों (§3.1)।
और इसके अलावा धारा 4.2.1 से: इंटीग्रल टाइप और वैल्यू :
अभिन्न प्रकारों के मान निम्नलिखित श्रेणियों में पूर्णांक हैं:
- बाइट के लिए, -128 से 127 तक, समावेशी
- संक्षेप में, -32768 से 32767 के लिए, समावेशी
- उदाहरण के लिए, -2147483648 से 2147483647, समावेशी
- लंबे समय तक, -9223372036854775808 से 9223372036854775807, समावेशी
- चार के लिए, '\ u0000' से '\' ओफ़्फ़ 'समावेशी, यानी 0 से 65535 तक
जावा 8 ने अहस्ताक्षरित पूर्णांक के लिए कुछ समर्थन जोड़ा है। आदिम intअभी भी हस्ताक्षरित है, हालांकि कुछ तरीके उन्हें अहस्ताक्षरित के रूप में व्याख्या करेंगे।
निम्नलिखित तरीके जावा 8 में इंटेगर वर्ग में जोड़े गए थे :
यहाँ एक उदाहरण है:
public static void main(String[] args) {
int uint = Integer.parseUnsignedInt("4294967295");
System.out.println(uint); // -1
System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}
पूरक के रूप में, यदि 64 बिट्स आपकी आवश्यकता को पूरा नहीं करते हैं, तो java.math.BigInteger आज़माएं ।
यह उन स्थितियों के लिए उपयुक्त है जहां संख्या 64 बिट लंबी सीमा से परे है।
public static void main(String args[]){
String max_long = "9223372036854775807";
String min_long = "-9223372036854775808";
BigInteger b1 = new BigInteger(max_long);
BigInteger b2 = new BigInteger(min_long);
BigInteger sum = b1.add(b1);
BigInteger difference = b2.subtract(b1);
BigInteger product = b1.multiply(b2);
BigInteger quotient = b1.divide(b1);
System.out.println("The sum is: " + sum);
System.out.println("The difference is: " + difference);
System.out.println("The product is: " + product);
System.out.println("The quotient is: " + quotient);
}
आउटपुट है:
योग है: 18446744073709551614
अंतर है: -18446744073709551615
उत्पाद है: -85070591730234615856620279821087277056
भागफल: 1 है
public static final int SIZE = 32;जावा 1.5 के बाद से निर्दिष्ट है ।