Czy Java int
zawsze i wszędzie będzie 32-bitową liczbą całkowitą ze znakiem?Czy Java int jest zawsze 32-bitowa?
Odpowiedz
Tak, jest zdefiniowany w The Java Language Specification.
Z Section 4.2: Primitive Types and Values:
Integralne typy
byte
,short
,int
ilong
, których wartości są 8-bitowe 16-bitowe, 32-bitowe lub 64-bitową liczbą ze znakiem two's- dopełnienie liczb całkowitych, odpowiednio ichar
, których wartości są 16-bitowymi liczbami całkowitymi bez znaku reprezentującymi jednostki kodowe UTF-16 (§3.1).
A dodatkowo z Section 4.2.1: Integral Types and Values:
Wartości integralną typy są całkowitymi w następujących zakresach:
- Dla bajt, od -128 do 127 włącznie
- W skrócie, od -32768 do 32767, w tym
- dla int, od -2147483648 do 2147483647, włącznie
- Długo z -9223372036854775808 do 9223372036854775807 włącznie
- char z '\ u0000' do '\ uFFFF' włącznie, to jest od 0 do 65535
int
S są 32 bity. Jeśli potrzebujesz więcej, long
s to 64 bity.
Java 8 dodała obsługę liczb całkowitych bez znaku. Pierwotny int
jest nadal podpisany, jednak niektóre metody będą interpretować je jako niepodpisane.
następujące metody dodano do Integer class Java 8:
- compareUnsigned (Int x int y)
- divideUnsigned (Int dywidendy Int dzielnik)
- parseUnsignedInt (łańcuch s)
- parseUnsignedInt (łańcuch s, Int radix)
- remainderUnsigned (Int dzielna, Int dzielnik)
- toUnsignedLo ng (int x)
- toUnsignedString (int i)
- toUnsignedString (int i int radix)
Oto przykład użycia:
public static void main(String[] args) {
int uint = Integer.parseUnsignedInt("4294967295");
System.out.println(uint); // -1
System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}
jako uzupełnienie, jeżeli długość 64 bitów nie spełnia Twoich wymagań, spróbuj java.math.BigInteger.
Jest odpowiedni dla sytuacji, w której liczba przekracza zakres 64-bitowy.
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);
}
wyjście jest:
suma wynosi: +18446744073709551614
Różnica: -18446744073709551615
Produkt: -85070591730234615856620279821087277056
Iloraz 1
- 1. Czy int jest zawsze inicjowane na 0?
- 2. Czy int jest zawsze szybszy niż Numbers/Floats w AS3?
- 3. Dlaczego parametr string.indexOf jest int w Java
- 4. Czy executePendingTransactions() jest zawsze konieczne?
- 5. Czy EOF zawsze jest ujemny?
- 6. Czy tablica dowolnego typu jest zawsze agregatem?
- 7. MVC3 - Binding DropdownList int - Wartość zawsze wymagane
- 8. Java int concurrency ++ int równoważne AtomicInteger.incrementAndGet()?
- 9. Java: Odpowiednik zakresu Pythona (int, int)?
- 10. Czy zawsze, gdy to możliwe, należy zamienić "const int" na "constexpr int" w C++ 11?
- 11. Powrót Java Enum Int
- 12. ExpandableListView jest zawsze zwinięty
- 13. Czy int main (int, char const * const *) jest dobrze uformowany?
- 14. C - sizeof int array zawsze zwraca 4
- 15. Podziałka Java int mylące
- 16. Java int + = podwójny składnia niespodzianka
- 17. Czy sekcja krytyczna jest zawsze szybsza?
- 18. Czy naruszenie zasady DRY jest zawsze złe?
- 19. Czy to (volatile bool) zawsze jest bezpieczne?
- 20. Czy varchar (MAX) jest zawsze lepszy?
- 21. Czy zamknięcie zasobów jest zawsze ważne?
- 22. Czy krojenie obiektów jest zawsze przydatne?
- 23. Czy ctime jest zawsze <= mtime?
- 24. Czy metoda atrybutu OnActionExecuted zawsze jest wykonywana?
- 25. Czy jest możliwe random_shuffle tablicy elementów int?
- 26. mediaplayer.isPlaying zawsze jest fałszywy
- 27. Czy java jest bezpieczna?
- 28. Czy złym zwyczajem jest zawsze uchwycić wszystko w wyrażeniu lambda?
- 29. Czy i +++ j jest zawsze traktowane jako i ++ + j?
- 30. Czy właściwości systemu Java zawsze mają wartość inną niż null?
Doskonała informacja :-) – joe