Klasa Java.lang.Integer w Javie
Klasa Integer jest klasą otaczającą typ pierwotny int, która zawiera kilka metod skutecznego radzenia sobie z wartością int, na przykład poprzez konwersję jej na reprezentację w postaci ciągu znaków i odwrotnie. Obiekt klasy Integer może przechowywać pojedynczą wartość typu int.
Konstruktorzy:
- Liczba całkowita(int b): Tworzy obiekt Integer zainicjowany podaną wartością.
Składnia:
public Integer(int b)
Parametry:
b : value with which to initialize
- Liczba całkowita(Ciąg s): Tworzy obiekt Integer zainicjowany wartością int podaną przez reprezentację w postaci ciągu znaków. Przyjmuje się, że domyślna podstawa wynosi 10.
Składnia:
public Integer(String s) throws NumberFormatException
Parametry:
s : string representation of the int value
Rzuca:
NumberFormatException : If the string provided does not represent any int value.
Metody:
1. doString() : Zwraca ciąg odpowiadający wartości int.
Składnia:
public String toString(int b)
Parametry:
b : int value for which string representation required.
2. doHexString() : Zwraca ciąg znaków odpowiadający wartości int w postaci szesnastkowej, czyli zwraca ciąg znaków reprezentujący wartość int w znakach szesnastkowych-[0-9][a-f]
Składnia:
public String toHexString(int b)
Parametry:
b : int value for which hex string representation required.
3. doOctalString() : Zwraca ciąg znaków odpowiadający wartości int w postaci ósemkowej, czyli zwraca ciąg znaków reprezentujący wartość int w znakach ósemkowych-[0-7]
Składnia:
public String toOctalString(int b)
Parametry:
b : int value for which octal string representation required.
4. doBinaryString() : Zwraca ciąg znaków odpowiadający wartości int w cyfrach binarnych, czyli zwraca ciąg znaków reprezentujący wartość int w znakach szesnastkowych-[0/1]
Składnia:
public String toBinaryString(int b)
Parametry:
b : int value for which binary string representation required.
5. wartość() : zwraca obiekt Integer zainicjowany podaną wartością.
Składnia:
public static Integer valueOf(int b)
Parametry:
b : a int value
- wartość(ciąg wartości,int radix) : Kolejna przeciążona funkcja, która zapewnia funkcję podobną do nowej Integer(Integer.parseInteger(val,radix))
Składnia:
public static Integer valueOf(String val, int radix) throws NumberFormatException
Parametry:
val : String to be parsed into int value radix : radix to be used while parsing
Rzuca:
NumberFormatException : if String cannot be parsed to a int value in given radix.
- wartośćOf(Wartość ciągu) : Kolejna przeciążona funkcja, która zapewnia funkcję podobną do nowej Integer(Integer.parseInt(val,10))
Składnia:
public static Integer valueOf(String s) throws NumberFormatException
Parametry:
s : a String object to be parsed as int
Rzuca:
NumberFormatException : if String cannot be parsed to a int value in given radix.
6. parseInt() : zwraca wartość int poprzez analizę ciągu znaków w podanej podstawie. Różni się od valueOf() tym, że zwraca pierwotną wartość int, a valueOf() zwraca obiekt Integer.
Składnia:
public static int parseInt(String val, int radix) throws NumberFormatException
Parametry:
val : String representation of int radix : radix to be used while parsing
Rzuca:
NumberFormatException : if String cannot be parsed to a int value in given radix.
- Kolejna przeciążona metoda zawierająca tylko String jako parametr, radix jest domyślnie ustawiony na 10.
Składnia:
public static int parseInt(String val) throws NumberFormatException
Parametry:
val : String representation of int
Rzuca:
NumberFormatException : if String cannot be parsed to a int value in given radix.
7. pobierz liczbę całkowitą(): zwraca obiekt Integer reprezentujący wartość związaną z daną właściwością systemową lub null, jeśli nie istnieje.
Składnia:
public static Integer getInteger(String prop)
Parametry:
prop : System property
- Kolejna przeciążona metoda, która zwraca drugi argument, jeśli właściwość nie istnieje, czyli nie zwraca wartości null, ale wartość domyślną podaną przez użytkownika.
Składnia:
public static Integer getInteger(String prop, int val)
Parametry:
prop : System property val : value to return if property does not exist.
- Inna przeciążona metoda, która analizuje wartość zgodnie ze zwróconą wartością, to znaczy, jeśli zwrócona wartość zaczyna się od #, jest analizowana jako szesnastkowa, jeśli zaczyna się od 0, jest analizowana jako ósemkowa, w przeciwnym razie jest analizowana jako dziesiętna.
Składnia:
public static Integer getInteger(String prop, Integer val)
Parametry:
prop : System property val : value to return if property does not exist.
8. dekodować() : zwraca obiekt Integer zawierający zdekodowaną wartość podanego ciągu. Podany ciąg musi mieć następującą formę, w przeciwnym razie zostanie zgłoszony wyjątek NumberFormatException-
Dziesiętny- (znak)Decimal_Number
Hex- (znak) 0xHex_Digits
Hex- (znak) 0XHex_Digits
Octal- (znak)0″Octal_Cyfr
Składnia:
public static Integer decode(String s) throws NumberFormatException
Parametry:
s : encoded string to be parsed into int val
Rzuca:
NumberFormatException : If the string cannot be decoded into a int value
9. obróć w lewo() : Zwraca liczbę całkowitą typu int poprzez obracanie bitów pozostałych po podanej odległości w formie uzupełnienia do dwóch podanej wartości. Przy obrocie w lewo najbardziej znaczący bit przesuwany jest na prawą stronę lub pozycja najmniej znacząca, czyli następuje cykliczny ruch bitów. Odległość ujemna oznacza obrót w prawo.
Składnia:
public static int rotateLeft(int val, int dist)
Parametry:
val : int value to be rotated dist : distance to rotate
10. obróć w prawo() : Zwraca liczbę całkowitą typu int poprzez obrócenie bitów w prawo o podaną odległość w postaci uzupełnienia dwójkowego podanej wartości. Przy obrocie w prawo, najmniej znaczący bit zostaje przesunięty w lewą stronę lub następuje najbardziej znacząca pozycja, czyli następuje cykliczny ruch bitów. Odległość ujemna oznacza obrót w lewo.
Składnia:
public static int rotateRight(int val, int dist)
Parametry:
val : int value to be rotated dist : distance to rotate
Jawa
// Java program to illustrate> // various Integer methods> public> class> Integer_test {> > public> static> void> main(String args[])> > {> > int> b => 55> ;> > String bb => '45'> ;> > // Construct two Integer objects> > Integer x => new> Integer(b);> > Integer y => new> Integer(bb);> > // toString()> > System.out.println(> 'toString(b) = '> > + Integer.toString(b));> > // toHexString(),toOctalString(),toBinaryString()> > // converts into hexadecimal, octal and binary> > // forms.> > System.out.println(> 'toHexString(b) ='> > + Integer.toHexString(b));> > System.out.println(> 'toOctalString(b) ='> > + Integer.toOctalString(b));> > System.out.println(> 'toBinaryString(b) ='> > + Integer.toBinaryString(b));> > // valueOf(): return Integer object> > // an overloaded method takes radix as well.> > Integer z = Integer.valueOf(b);> > System.out.println(> 'valueOf(b) = '> + z);> > z = Integer.valueOf(bb);> > System.out.println(> 'ValueOf(bb) = '> + z);> > z = Integer.valueOf(bb,> 6> );> > System.out.println(> 'ValueOf(bb,6) = '> + z);> > // parseInt(): return primitive int value> > // an overloaded method takes radix as well> > int> zz = Integer.parseInt(bb);> > System.out.println(> 'parseInt(bb) = '> + zz);> > zz = Integer.parseInt(bb,> 6> );> > System.out.println(> 'parseInt(bb,6) = '> + zz);> > // getInteger(): can be used to retrieve> > // int value of system property> > int> prop> > = Integer.getInteger(> 'sun.arch.data.model'> );> > System.out.println(> > 'getInteger(sun.arch.data.model) = '> + prop);> > System.out.println(> 'getInteger(abcd) ='> > + Integer.getInteger(> 'abcd'> ));> > // an overloaded getInteger() method> > // which return default value if property not found.> > System.out.println(> > 'getInteger(abcd,10) ='> > + Integer.getInteger(> 'abcd'> ,> 10> ));> > // decode() : decodes the hex,octal and decimal> > // string to corresponding int values.> > String decimal => '45'> ;> > String octal => '005'> ;> > String hex => '0x0f'> ;> > Integer dec = Integer.decode(decimal);> > System.out.println(> 'decode(45) = '> + dec);> > dec = Integer.decode(octal);> > System.out.println(> 'decode(005) = '> + dec);> > dec = Integer.decode(hex);> > System.out.println(> 'decode(0x0f) = '> + dec);> > // rotateLeft and rotateRight can be used> > // to rotate bits by specified distance> > int> valrot => 2> ;> > System.out.println(> > 'rotateLeft(0000 0000 0000 0010 , 2) ='> > + Integer.rotateLeft(valrot,> 2> ));> > System.out.println(> > 'rotateRight(0000 0000 0000 0010,3) ='> > + Integer.rotateRight(valrot,> 3> ));> > }> }> |
Wyjście:
toString(b) = 55 toHexString(b) =37 toOctalString(b) =67 toBinaryString(b) =110111 valueOf(b) = 55 ValueOf(bb) = 45 ValueOf(bb,6) = 29 parseInt(bb) = 45 parseInt(bb,6) = 29 getInteger(sun.arch.data.model) = 64 getInteger(abcd) =null getInteger(abcd,10) =10 decode(45) = 45 decode(005) = 5 decode(0x0f) = 15 rotateLeft(0000 0000 0000 0010 , 2) =8 rotateRight(0000 0000 0000 0010,3) =1073741824
11. wartość bajtu() : zwraca wartość bajtu odpowiadającą temu obiektowi Integer.
Składnia:
public byte byteValue()
12. krótkaWartość() : zwraca krótką wartość odpowiadającą temu obiektowi typu Integer.
Składnia:
public short shortValue()
13. intValue() : zwraca wartość typu int odpowiadającą temu obiektowi typu Integer.
Składnia:
public int intValue()
13. długaWartość() : zwraca długą wartość odpowiadającą temu obiektowi typu Integer.
Składnia:
public long longValue()
14. podwójna wartość() : zwraca podwójną wartość odpowiadającą temu obiektowi typu Integer.
Składnia:
public double doubleValue()
15. floatValue() : zwraca wartość zmiennoprzecinkową odpowiadającą temu obiektowi Integer.
Składnia:
public float floatValue()
16. kod hash() : zwraca hashcode odpowiadający temu obiektowi Integer.
Składnia:
public int hashCode()
17. liczba bitów() : Zwraca liczbę ustawionych bitów jako uzupełnienie dwójkowe podanej liczby całkowitej.
Składnia:
public static int bitCount(int i)
Parametry:
i : int value whose set bits to count
18. liczbaZerWiodących() : Zwraca liczbę 0 bitów poprzedzających najwyższy 1 bit w postaci uzupełnienia dwójkowego wartości, tj. jeśli liczba w postaci uzupełnienia dwójkowego wynosi 0000 1010 0000 0000, wówczas ta funkcja zwróci 4.
Składnia:
public static int numberofLeadingZeroes(int i)
Parametry:
i : int value whose leading zeroes to count in twos complement form
19. numberOfTrailingZeroes() : Zwraca liczbę 0 bitów następujących po ostatnim 1 bicie w formie uzupełnienia dwójkowego wartości, tj. jeśli liczba w postaci uzupełnienia dwójkowego wynosi 0000 1010 0000 0000, wówczas ta funkcja zwróci 9.
Składnia:
public static int numberofTrailingZeroes(int i)
Parametry:
i : int value whose trailing zeroes to count in twos complement form
20. najwyższyOneBit() : Zwraca wartość zawierającą co najwyżej jeden bit, na pozycji najwyższego bitu w podanej wartości. Zwraca 0 jeśli podana wartość wynosi 0, czyli jeśli liczba wynosi 0000 0000 0000 1111, to funkcja zwraca 0000 0000 0000 1000 (jeden najwyższy bit w podanej liczbie)
Składnia:
public static int highestOneBit(int i)
Parametry:
i : int value
21. NajniższyOneBit() : Zwraca wartość zawierającą co najwyżej jeden bit, na pozycji najniższego bitu podanej wartości. Zwraca 0 jeśli podana wartość wynosi 0, czyli jeśli liczba wynosi 0000 0000 0000 1111, to funkcja zwraca 0000 0000 0000 0001 (jeden najwyższy bit w podanej liczbie)
Składnia:
public static int LowestOneBit(int i)
Parametry:
i : int value
22. równa się() : Służy do porównywania równości dwóch obiektów typu Integer. Ta metoda zwraca wartość true, jeśli oba obiekty zawierają tę samą wartość int. Należy go używać tylko w przypadku sprawdzania równości. We wszystkich pozostałych przypadkach preferowana powinna być metoda CompareTo.
Składnia:
public boolean equals(Object obj)
Parametry:
obj : object to compare with
23. porównaj() : Służy do porównywania dwóch obiektów Integer pod kątem równości liczbowej. Należy tego używać przy porównywaniu dwóch wartości typu Integer w celu uzyskania równości liczbowej, ponieważ umożliwia to rozróżnienie między mniejszymi i większymi wartościami. Zwraca wartość mniejszą niż 0,0, wartość większą niż 0 dla wartości mniejszych niż, równych i większych niż.
Składnia:
public int compareTo(Integer b)
Parametry:
b : Integer object to compare with
24. porównaj() : Służy do porównywania dwóch pierwotnych wartości int w celu uzyskania równości liczbowej. Ponieważ jest to metoda statyczna, można jej używać bez tworzenia obiektu typu Integer.
Składnia:
public static int compare(int x,int y)
Parametry:
x : int value y : another int value
25. znak() : zwraca -1 dla wartości ujemnych, 0 dla 0 i +1 dla wartości większych niż 0.
Składnia:
public static int signum(int val)
Parametry:
val : int value for which signum is required.
26. odwróć() : zwraca pierwotną wartość int, odwracającą kolejność bitów w postaci uzupełnienia do dwóch dla danej wartości int.
Składnia:
public static int reverseBytes(int val)
Parametry:
val : int value whose bits to reverse in order.
27. odwrotne bajty() : zwraca pierwotną wartość int, odwracającą kolejność bajtów w formie uzupełnienia do dwóch dla danej wartości int.
Składnia:
public static int reverseBytes(int val)
Parametry:
val : int value whose bits to reverse in order.
28. static int CompareUnsigned(int x, int y) : Ta metoda porównuje numerycznie dwie wartości int, traktując je jako bez znaku.
Składnia:
public static int compareUnsigned(int x, int y)
29. static int splitUnsigned(int dzielna, int dzielnik) : Ta metoda zwraca iloraz bez znaku z dzielenia pierwszego argumentu przez drugi, przy czym każdy argument i wynik są interpretowane jako wartość bez znaku.
Składnia:
public static int divideUnsigned(int dividend, int divisor)
30. static int max(int a, int b) : Ta metoda zwraca większą z dwóch wartości int, tak jakby wywołując Math.max.
Składnia:
public static int max(int a, int b)
31. static int min(int a, int b) : Ta metoda zwraca mniejszą z dwóch wartości int, tak jakby wywołując Math.min.
Składnia:
public static int min(int a, int b)
32. static int parseUnsignedInt(CharSequence s, int BeginIndex, int endIndex, int radix) : Ta metoda analizuje argument CharSequence jako liczbę całkowitą bez znaku w określonej podstawie, zaczynając od określonego BeginIndex i kończąc na endIndex – 1.
Składnia:
public static int parseUnsignedInt(CharSequence s, int beginIndex, int endIndex, int radix) throws NumberFormatException
33. static int parseUnsignedInt(String s) : Ta metoda analizuje argument ciągu jako dziesiętną liczbę całkowitą bez znaku.
Składnia:
public static int parseUnsignedInt(String s) throws NumberFormatException
34. static int parseUnsignedInt(String s, int radix) : Ta metoda analizuje argument typu string jako liczbę całkowitą bez znaku w podstawie określonej przez drugi argument.
Składnia:
public static int parseUnsignedInt(String s, int radix) throws NumberFormatException
35. static int resztaUnsigned(int dzielna, int dzielnik) : Ta metoda zwraca resztę bez znaku z dzielenia pierwszego argumentu przez drugi, przy czym każdy argument i wynik są interpretowane jako wartość bez znaku.
Składnia:
public static int remainderUnsigned(int dividend, int divisor)
36. static int sum(int a, int b) : Ta metoda dodaje dwie liczby całkowite zgodnie z operatorem +.
Składnia:
public static int sum(int a, int b)
37. statyczny długi toUnsignedLong(int x) : Ta metoda konwertuje argument na długi poprzez konwersję bez znaku.
Składnia:
public static long toUnsignedLong(int x)
38. ciąg statyczny toUnsignedString(int i) : Ta metoda zwraca ciąg reprezentujący argument jako wartość dziesiętną bez znaku.
Składnia:
public static String toUnsignedString(int i, int radix)
Jawa
// Java program to illustrate> // various Integer class methods> public> class> Integer_test {> > public> static> void> main(String args[])> > {> > int> b => 55> ;> > String bb => '45'> ;> > // Construct two Integer objects> > Integer x => new> Integer(b);> > Integer y => new> Integer(bb);> > // xxxValue can be used to retrieve> > // xxx type value from int value.> > // xxx can be int,byte,short,long,double,float> > System.out.println(> 'bytevalue(x) = '> > + x.byteValue());> > System.out.println(> 'shortvalue(x) = '> > + x.shortValue());> > System.out.println(> 'intvalue(x) = '> + x.intValue());> > System.out.println(> 'longvalue(x) = '> > + x.longValue());> > System.out.println(> 'doublevalue(x) = '> > + x.doubleValue());> > System.out.println(> 'floatvalue(x) = '> > + x.floatValue());> > int> value => 45> ;> > // bitcount() : can be used to count set bits> > // in twos complement form of the number> > System.out.println(> 'Integer.bitcount(value)='> > + Integer.bitCount(value));> > // numberOfTrailingZeroes and numberOfLeadingZeroes> > // can be used to count prefix and postfix sequence> > // of 0> > System.out.println(> > 'Integer.numberOfTrailingZeros(value)='> > + Integer.numberOfTrailingZeros(value));> > System.out.println(> > 'Integer.numberOfLeadingZeros(value)='> > + Integer.numberOfLeadingZeros(value));> > // highestOneBit returns a value with one on highest> > // set bit position> > System.out.println(> 'Integer.highestOneBit(value)='> > + Integer.highestOneBit(value));> > // highestOneBit returns a value with one on lowest> > // set bit position> > System.out.println(> 'Integer.lowestOneBit(value)='> > + Integer.lowestOneBit(value));> > // reverse() can be used to reverse order of bits> > // reverseBytes() can be used to reverse order of> > // bytes> > System.out.println(> 'Integer.reverse(value)='> > + Integer.reverse(value));> > System.out.println(> 'Integer.reverseBytes(value)='> > + Integer.reverseBytes(value));> > // signum() returns -1,0,1 for negative,0 and> > // positive values> > System.out.println(> 'Integer.signum(value)='> > + Integer.signum(value));> > // hashcode() returns hashcode of the object> > int> hash = x.hashCode();> > System.out.println(> 'hashcode(x) = '> + hash);> > // equals returns boolean value representing> > // equality> > boolean> eq = x.equals(y);> > System.out.println(> 'x.equals(y) = '> + eq);> > // compare() used for comparing two int values> > int> e = Integer.compare(x, y);> > System.out.println(> 'compare(x,y) = '> + e);> > // compareTo() used for comparing this value with> > // some other value> > int> f = x.compareTo(y);> > System.out.println(> 'x.compareTo(y) = '> + f);> > }> }> |
Wyjście :
bytevalue(x) = 55 shortvalue(x) = 55 intvalue(x) = 55 longvalue(x) = 55 doublevalue(x) = 55.0 floatvalue(x) = 55.0 Integer.bitcount(value)=4 Integer.numberOfTrailingZeros(value)=0 Integer.numberOfLeadingZeros(value)=26 Integer.highestOneBit(value)=32 Integer.lowestOneBit(value)=1 Integer.reverse(value)=-1275068416 Integer.reverseBytes(value)=754974720 Integer.signum(value)=1 hashcode(x) = 55 x.equals(y) = false compare(x,y) = 1 x.compareTo(y) = 1
Inicjalizacja klasy opakowania Integer w Javie:
Typ 1: Inicjalizacja bezpośrednia:
W przestrzeni stałych w pamięci sterty zostanie utworzony obiekt stały klasy Integer. Przestrzeń stałych: Dla lepszego zrozumienia wystarczy wyobrazić sobie, że w pamięci sterty jest trochę miejsca na stałe.
Przykład:
Integer x = 200; //initializing directly x = 300; //modifying x x = 10; //modifying x again
Liczba całkowita x = 200
- Kompilator konwertuje powyższą instrukcję na: Liczba całkowita x=Integer.valueOf(200) . Jest to tzw Autoboxing . Pierwotna wartość całkowita 200 jest konwertowana na obiekt.
(Aby zrozumieć automatyczne pakowanie i rozpakowywanie, sprawdź tutaj: )
- x wskazuje na liczbę 200, która występuje w przestrzeni stałych. Patrz rys. 1.
Ryc. 1
x = 300
- Autoboxing jest wykonywany ponownie, ponieważ x jest obiektem klasy Integer, który jest bezpośrednio inicjowany.
- Notatka: Bezpośrednio zainicjowany obiekt (x) nie może być modyfikowany, ponieważ jest stałą. Kiedy spróbujemy zmodyfikować obiekt, wskazując nową stałą (300), stara stała (200) będzie obecna w pamięci sterty, ale obiekt będzie wskazywał nową stałą.
- x wskazuje na liczbę 300, która występuje w przestrzeni stałych. Patrz rys. 2.
Ryc. 2
x = 10
- Notatka: Domyślnie dla wartości od -128 do 127 metoda Integer.valueOf() nie utworzy nowej instancji Integer. Zwraca wartość ze swojej pamięci podręcznej.
- x punkty 10, które są obecne w pamięci podręcznej.
Ryc. 3
Jeśli następnym razem przypiszemy x = 200 lub x = 300, wskaże to wartość 200 lub 300, która występuje już w przestrzeni stałych. Jeśli przypiszemy do x wartości inne niż te dwie wartości, wówczas utworzy się nowa stała.
(Sprawdź temat porównania klas opakowania Integer, aby lepiej zrozumieć)
Typ 2: Inicjowanie dynamiczne:
Obiekt klasy Integer niebędący stałą zostanie utworzony poza przestrzenią stałych. Tworzy również stałą Integer w przestrzeni stałych. Zmienna będzie wskazywać obiekt Integer, a nie stałą Integer.
Przykład:
Integer a = new Integer(250); //Initializing dynamically a = 350; //Type 1 initialization
Liczba całkowita a = nowa liczba całkowita (250)
- 250 jest tworzony wewnątrz i na zewnątrz przestrzeni stałych. Zmienna „a” będzie wskazywała wartość znajdującą się poza przestrzenią stałych. Patrz rys. 4.
Ryc. 4
a = 350;
- Po automatycznym zaznaczeniu „a” będzie wskazywać 350. Patrz rys. 5.
Ryc. 5
Jeśli następnym razem przypiszemy a = 250, nie będzie to wskazywało na obiekt już istniejący o tej samej wartości, utworzy nowy obiekt.
Bibliografia: Oficjalna dokumentacja Java