Java.lang.Integer třída v Javě
Třída Integer je obalová třída pro primitivní typ int, která obsahuje několik metod, jak efektivně pracovat s hodnotou int, jako je její převod na řetězcovou reprezentaci a naopak. Objekt třídy Integer může obsahovat jednu hodnotu typu int.
Konstruktéři:
- Celé číslo (int b): Vytvoří objekt typu Integer inicializovaný zadanou hodnotou.
Syntax:
public Integer(int b)
Parametry:
b : value with which to initialize
- Celé číslo (řetězce s): Vytvoří objekt typu Integer inicializovaný hodnotou int poskytnutou řetězcovou reprezentací. Výchozí radix je 10.
Syntax:
public Integer(String s) throws NumberFormatException
Parametry:
s : string representation of the int value
Hody:
NumberFormatException : If the string provided does not represent any int value.
Metody:
1. toString() : Vrátí řetězec odpovídající hodnotě int.
Syntax:
public String toString(int b)
Parametry:
b : int value for which string representation required.
2. toHexString() : Vrátí řetězec odpovídající hodnotě int v hexadecimálním tvaru, to znamená, že vrátí řetězec představující hodnotu int v hexadecimálních znacích-[0-9][a-f]
Syntax:
public String toHexString(int b)
Parametry:
b : int value for which hex string representation required.
3. toOctalString() : Vrátí řetězec odpovídající hodnotě int v osmičkovém tvaru, to znamená, že vrátí řetězec představující hodnotu int v osmičkových znacích-[0-7]
Syntax:
public String toOctalString(int b)
Parametry:
b : int value for which octal string representation required.
4. toBinaryString() : Vrátí řetězec odpovídající hodnotě int v binárních číslicích, to znamená, že vrátí řetězec představující hodnotu int v hexadecimálních znacích-[0/1]
Syntax:
public String toBinaryString(int b)
Parametry:
b : int value for which binary string representation required.
5. valueOf() : vrátí objekt Integer inicializovaný zadanou hodnotou.
Syntax:
public static Integer valueOf(int b)
Parametry:
b : a int value
- valueOf(String val,int radix) : Další přetížená funkce, která poskytuje funkci podobnou novému Integer(Integer.parseInteger(val,radix))
Syntax:
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
Hody:
NumberFormatException : if String cannot be parsed to a int value in given radix.
- valueOf(hodnota řetězce) : Další přetížená funkce, která poskytuje funkci podobnou novému Integer(Integer.parseInt(val,10))
Syntax:
public static Integer valueOf(String s) throws NumberFormatException
Parametry:
s : a String object to be parsed as int
Hody:
NumberFormatException : if String cannot be parsed to a int value in given radix.
6. parseInt() : vrátí hodnotu int analýzou řetězce v zadaném radixu. Liší se od valueOf(), protože vrací primitivní int hodnotu a valueOf() vrací objekt typu Integer.
Syntax:
public static int parseInt(String val, int radix) throws NumberFormatException
Parametry:
val : String representation of int radix : radix to be used while parsing
Hody:
NumberFormatException : if String cannot be parsed to a int value in given radix.
- Další přetížená metoda obsahující pouze řetězec jako parametr, radix je standardně nastavena na 10.
Syntax:
public static int parseInt(String val) throws NumberFormatException
Parametry:
val : String representation of int
Hody:
NumberFormatException : if String cannot be parsed to a int value in given radix.
7. getInteger(): vrátí objekt Integer představující hodnotu přidruženou k dané systémové vlastnosti nebo hodnotu null, pokud neexistuje.
Syntax:
public static Integer getInteger(String prop)
Parametry:
prop : System property
- Další přetížená metoda, která vrací druhý argument, pokud vlastnost neexistuje, to znamená, že nevrací null, ale výchozí hodnotu zadanou uživatelem.
Syntax:
public static Integer getInteger(String prop, int val)
Parametry:
prop : System property val : value to return if property does not exist.
- Další přetížená metoda, která analyzuje hodnotu podle vrácené hodnoty, to znamená, že pokud vrácená hodnota začíná #, je analyzována jako šestnáctková, pokud začíná 0, pak je analyzována jako osmičková, jinak decimální.
Syntax:
public static Integer getInteger(String prop, Integer val)
Parametry:
prop : System property val : value to return if property does not exist.
8. decode() : vrátí objekt Integer obsahující dekódovanou hodnotu poskytnutého řetězce. Zadaný řetězec musí mít následující tvar, jinak bude vyvolána výjimka NumberFormatException-
Desetinné- (znak)Desetinné_číslo
Hex- (znak)0xHex_Digits
Hex- (znak)0XHex_číslice
Osmičková- (znak)0″Octal_Digits
Syntax:
public static Integer decode(String s) throws NumberFormatException
Parametry:
s : encoded string to be parsed into int val
Hody:
NumberFormatException : If the string cannot be decoded into a int value
9. otočte doleva() : Vrátí primitivní int otočením bitů doleva o danou vzdálenost ve formě dvojkového doplňku zadané hodnoty. Při otáčení doleva se nejvýznamnější bit přesune na pravou stranu nebo do pozice nejméně významné, tj. probíhá cyklický pohyb bitů. Záporná vzdálenost znamená pravou rotaci.
Syntax:
public static int rotateLeft(int val, int dist)
Parametry:
val : int value to be rotated dist : distance to rotate
10. otočitVpravo() : Vrátí primitivní int otočením bitů doprava o danou vzdálenost ve formě dvojkového doplňku zadané hodnoty. Při otáčení doprava se nejméně významný bit přesune na levou stranu nebo nejvýznamnější pozice, tj. probíhá cyklický pohyb bitů. Záporná vzdálenost znamená rotaci vlevo.
Syntax:
public static int rotateRight(int val, int dist)
Parametry:
val : int value to be rotated dist : distance to rotate
Jáva
// 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> ));> > }> }> |
Výstup:
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. byteValue() : vrátí bajtovou hodnotu odpovídající tomuto Integer Object.
Syntax:
public byte byteValue()
12. shortValue() : vrátí krátkou hodnotu odpovídající tomuto objektu Integer.
Syntax:
public short shortValue()
13. intValue() : vrátí hodnotu int odpovídající tomuto objektu Integer.
Syntax:
public int intValue()
13. longValue() : vrátí dlouhou hodnotu odpovídající tomuto objektu Integer.
Syntax:
public long longValue()
14. doubleValue() : vrátí dvojitou hodnotu odpovídající tomuto objektu Integer.
Syntax:
public double doubleValue()
15. floatValue() : vrátí plovoucí hodnotu odpovídající tomuto objektu Integer.
Syntax:
public float floatValue()
16. hashCode() : vrátí hashcode odpovídající tomuto objektu Integer.
Syntax:
public int hashCode()
17. bitcount() : Vrátí počet nastavených bitů ve dvojkovém doplňku daného celého čísla.
Syntax:
public static int bitCount(int i)
Parametry:
i : int value whose set bits to count
18. numberOfLeadingZeroes() : Vrátí počet 0 bitů předcházejících nejvyššímu 1 bitu ve formě dvojkového doplňku hodnoty, tj. pokud je číslo ve formě dvojkového doplňku 0000 1010 0000 0000, pak tato funkce vrátí 4.
Syntax:
public static int numberofLeadingZeroes(int i)
Parametry:
i : int value whose leading zeroes to count in twos complement form
19. numberOfTrailingZeroes() : Vrátí počet 0 bitů následujících po posledním 1 bitu ve formě dvojkového doplňku hodnoty, tj. pokud je číslo ve formě dvojkového doplňku 0000 1010 0000 0000, pak tato funkce vrátí 9.
Syntax:
public static int numberofTrailingZeroes(int i)
Parametry:
i : int value whose trailing zeroes to count in twos complement form
20. nejvyššíOneBit() : Vrátí hodnotu s nejvýše jedním bitem na pozici nejvyššího jednoho bitu v dané hodnotě. Vrátí 0, pokud je zadaná hodnota 0, tedy pokud je číslo 0000 0000 0000 1111, pak tato funkce vrátí 0000 0000 0000 1000 (nejvyšší jeden bit v daném čísle)
Syntax:
public static int highestOneBit(int i)
Parametry:
i : int value
21. Nejnižší JedenBit() : Vrátí hodnotu s nejvýše jedním bitem na pozici nejnižšího bitu v dané hodnotě. Vrátí 0, pokud je zadaná hodnota 0, to znamená, pokud je číslo 0000 0000 0000 1111, pak tato funkce vrátí 0000 0000 0000 0001 (nejvyšší jeden bit v daném čísle)
Syntax:
public static int LowestOneBit(int i)
Parametry:
i : int value
22. rovná se() : Používá se k porovnání rovnosti dvou objektů typu Integer. Tato metoda vrátí hodnotu true, pokud oba objekty obsahují stejnou hodnotu int. Mělo by být použito pouze při kontrole rovnosti. Ve všech ostatních případech by měla být preferována metoda CompareTo.
Syntax:
public boolean equals(Object obj)
Parametry:
obj : object to compare with
23. CompareTo() : Používá se k porovnání dvou objektů typu Integer pro numerickou rovnost. To by mělo být použito při porovnávání dvou celočíselných hodnot pro numerickou rovnost, protože by to rozlišovalo mezi menšími a většími hodnotami. Vrátí hodnotu menší než 0,0, hodnotu větší než 0 pro menší než, rovnou a větší než.
Syntax:
public int compareTo(Integer b)
Parametry:
b : Integer object to compare with
24. porovnej() : Používá se k porovnání dvou primitivních hodnot int pro numerickou rovnost. Protože se jedná o statickou metodu, lze ji použít bez vytvoření jakéhokoli objektu typu Integer.
Syntax:
public static int compare(int x,int y)
Parametry:
x : int value y : another int value
25. znak() : vrátí -1 pro záporné hodnoty, 0 pro 0 a +1 pro hodnoty větší než 0.
Syntax:
public static int signum(int val)
Parametry:
val : int value for which signum is required.
26. zpět () : vrací primitivní hodnotu int, která převrací pořadí bitů ve formě dvojkového doplňku dané hodnoty int.
Syntax:
public static int reverseBytes(int val)
Parametry:
val : int value whose bits to reverse in order.
27. reverseBytes() : vrátí primitivní hodnotu int, která obrátí pořadí bajtů ve formě dvojkového doplňku dané hodnoty int.
Syntax:
public static int reverseBytes(int val)
Parametry:
val : int value whose bits to reverse in order.
28. static int CompareUnsigned(int x, int y) : Tato metoda porovnává dvě hodnoty int numericky a považuje je za hodnoty bez znaménka.
Syntax:
public static int compareUnsigned(int x, int y)
29. static int divisionUnsigned(int dělenec, int dělitel) : Tato metoda vrací podíl bez znaménka dělení prvního argumentu druhým, přičemž každý argument a výsledek jsou interpretovány jako hodnota bez znaménka.
Syntax:
public static int divideUnsigned(int dividend, int divisor)
30. static int max(int a, int b) : Tato metoda vrací větší ze dvou hodnot int jakoby voláním Math.max.
Syntax:
public static int max(int a, int b)
31. statický int min(int a, int b) : Tato metoda vrací menší ze dvou hodnot int jakoby voláním Math.min.
Syntax:
public static int min(int a, int b)
32. static int parseUnsignedInt(CharSequence s, int beginIndex, int endIndex, int radix) : Tato metoda analyzuje argument CharSequence jako int bez znaménka v zadaném radixu, začínající na zadaném beginIndex a sahajícím k endIndex – 1.
Syntax:
public static int parseUnsignedInt(CharSequence s, int beginIndex, int endIndex, int radix) throws NumberFormatException
33. static int parseUnsignedInt(String s) : Tato metoda analyzuje argument řetězce jako celé číslo bez znaménka.
Syntax:
public static int parseUnsignedInt(String s) throws NumberFormatException
34. static int parseUnsignedInt(String s, int radix) : Tato metoda analyzuje argument řetězce jako celé číslo bez znaménka v radixu určeném druhým argumentem.
Syntax:
public static int parseUnsignedInt(String s, int radix) throws NumberFormatException
35. static int zbytekUnsigned(int dělenec, int dělitel) : Tato metoda vrací zbytek bez znaménka z dělení prvního argumentu druhým, přičemž každý argument a výsledek jsou interpretovány jako hodnota bez znaménka.
Syntax:
public static int remainderUnsigned(int dividend, int divisor)
36. statický int součet(int a, int b) : Tato metoda sečte dvě celá čísla podle operátoru +.
Syntax:
public static int sum(int a, int b)
37. static long toUnsignedLong(int x) : Tato metoda převede argument na long pomocí převodu bez znaménka.
Syntax:
public static long toUnsignedLong(int x)
38. statický řetězec toUnsignedString(int i) : Tato metoda vrací řetězcovou reprezentaci argumentu jako desítkovou hodnotu bez znaménka.
Syntax:
public static String toUnsignedString(int i, int radix)
Jáva
// 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);> > }> }> |
Výstup :
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
Inicializace třídy Integer wrapper v Javě:
Typ 1: Přímá inicializace:
Konstantní objekt třídy Integer bude vytvořen uvnitř prostoru konstant v paměti haldy. Prostor konstant: Pro lepší pochopení je třeba si představit, že v paměti haldy je určitý prostor pro konstanty.
Příklad:
Integer x = 200; //initializing directly x = 300; //modifying x x = 10; //modifying x again
Celé číslo x = 200
- Kompilátor převede výše uvedený příkaz na: Celé číslo x=Integer.valueOf(200) . Toto je známé jako Autoboxing . Primitivní celočíselná hodnota 200 se převede na objekt.
(Chcete-li pochopit Autoboxing & Unboxing, zkontrolujte zde: )
- x ukazuje na 200, která je přítomna v prostoru konstant. Viz obr. 1.
Obr. 1
x = 300
- Autoboxing se provádí znovu, protože x je objekt třídy Integer, který je přímo inicializován.
- Poznámka: Přímo inicializovaný objekt(x) nelze upravit, protože je konstantou. Když se pokusíme upravit objekt ukázáním na novou konstantu (300), stará konstanta (200) bude přítomna v paměti haldy, ale objekt bude ukazovat na novou konstantu.
- x ukazuje na 300, která je přítomna v prostoru konstant. Viz obr. 2.
Obr. 2
x = 10
- Poznámka: Ve výchozím nastavení pro hodnoty -128 až 127 metoda Integer.valueOf() nevytvoří novou instanci Integer. Vrací hodnotu ze své mezipaměti.
- x bodů 10, který je přítomen v mezipaměti.
Obr
Pokud příště přiřadíme x = 200 nebo x=300, bude to ukazovat na hodnotu 200 nebo 300, která je již přítomna v prostoru konstant. Pokud x přiřadíme jiné hodnoty než tyto dvě hodnoty, vytvoří se nová konstanta.
(Pro lepší pochopení se podívejte na téma porovnání tříd obálky Integer)
Typ 2: Dynamická inicializace:
Objekt třídy Integer, který není konstantou, bude vytvořen mimo prostor konstant. Vytvoří také celočíselnou konstantu uvnitř prostoru konstant. Proměnná bude ukazovat na objekt Integer a ne na konstantu Integer.
Příklad:
Integer a = new Integer(250); //Initializing dynamically a = 350; //Type 1 initialization
Celé číslo a = nové celé číslo(250)
- 250 je vytvořen uvnitř i vně prostoru konstant. Proměnná „a“ bude ukazovat hodnotu, která je mimo prostor konstant. Viz obr. 4.
Obr
a = 350;
- Po autoboxingu bude „a“ ukazovat na 350. Viz obr. 5.
Obr
Pokud příště přiřadíme a = 250, nebude to ukazovat na již přítomný objekt se stejnou hodnotou, ale vytvoří nový objekt.
Reference: Oficiální Java dokumentace