1. Integerkelas

Integeruga apik ing iku kelas, kang tegese iku bisa duwe lapangan lan cara. Lan, mesthi, duwe wong-wong mau. A akèh wong - Welasan wong. Ing kene kita bakal nimbang sing paling dhasar.

Kelas kasebut Integernduweni rong kolom sing ngemot nilai maksimum lan minimal saka intjinis kasebut:

lapangan Katrangan
Integer.MAX_VALUE
Nilai maksimum bisa saka intjinis
Integer.MIN_VALUE
Nilai paling minimal saka intjinis kasebut

Kadhangkala sampeyan pengin nemtokake intnilai sing paling cilik utawa paling gedhe menyang variabel. Kanggo ngindhari kode sampeyan kanthi konstanta sing ora bisa dingerteni, sampeyan bisa nulis iki kanthi cetha kaya ing ngisor iki:

Kode Katrangan
int min = Integer.MIN_VALUE;
min == 0x80000000

Kelas Integeruga duwe sawetara cara sing menarik. Punika:

Metode Katrangan
String Integer.toHexString(int)
Ngasilake string sing minangka perwakilan heksadesimal saka nomer kasebut
String Integer.toBinaryString(int)
Ngasilake string sing minangka perwakilan binar saka nomer kasebut
String Integer.toOctalString(int)
Ngasilake senar sing minangka perwakilan octal saka nomer kasebut
Integer Integer.valueOf(int i)
Wraps liwat inting Integerobyek
Integer Integer.parseInt(String)
Ngasilake nomer sing dipikolehi saka senar liwati

Sampeyan sadurunge nemoni cara statis Integer.parseInt(). Ayo kelingan cara kerjane:

int name = Integer.parseInt(string);

Yen senar sing ngemot nomer (mung digit) diterusake menyang parseInt()metode kasebut, bakal ngurai senar kasebut lan ngasilake nomer kasebut.

Liyane saka cara uga migunani. Contone, sawetara bisa ngowahi nomer liwati menyang senar ngemot perwakilan binar, octal utawa heksadesimal saka nomer.



2. Doublekelas

Umumé, Doublekelas padha karo Integerkelas, mung mbungkus a doubletinimbang int. Uga duwe lapangan lan cara sing bakal dadi kapentingan kanggo kita. Coba sawetara:

Kelas kasebut Doublenduweni enem lapangan sing menarik:

lapangan Katrangan
double Double.NEGATIVE_INFINITY
Negatif tanpa wates
double Double.POSITIVE_INFINITY
Positif tanpa wates
int Double.MIN_EXPONENT
Eksponen minimal (2 x )
int Double.MAX_EXPONENT
Eksponen maksimal (2 x )
double Double.MIN_VALUE
Nilai paling minimal saka doublejinis kasebut
double Double.MAX_VALUE
Nilai maksimum bisa saka doublejinis

tanpa wates

Yen sampeyan dibagi -1.0dening 0.0, sampeyan entuk infinity negatif. Yen sampeyan dibagi 1.0dening 0.0, sampeyan entuk infinity positif. Ora mung bisa dibagi doublekaro nul, nanging sampeyan uga bisa nggunakake nyimpen asil operasi iki.

Eksponen saka adouble

Ngerteni eksponen iku gampang. Sacara internal, dobel kasusun saka mantissa lan eksponen. Nanging ing kene regane eksponen ora , nanging . Mangkono, yen eksponen mundhak dening , Nilai total nomer bakal pindho.10x2x1

MIN_EXPONENT == -1024, kang tegese , kang kira-kira padha karo2-102410-308

Lan mesthi, Doublekelas kasebut duwe cara sing menarik:

Metode Katrangan
String Double.toHexString(double)
Ngasilake string sing minangka perwakilan heksadesimal saka nomer kasebut
boolean Double.isInfinite(double)
Priksa manawa nomer liwati iku tanpa wates.
boolean Double.isNaN(double)
Priksa manawa nomer liwati ikuNaN
Double Double.valueOf(double)
Wraps liwat doubleing Doubleobyek
Double Double.parseDouble(String)
Ngasilake nomer sing dipikolehi saka senar liwati

Apike, ana isInfinite()cara sing bali trueyen nomer liwati positif utawa negatif tanpa wates.

Cara kasebut isNaN()padha - mriksa manawa nomer sing dilewati yaiku NaN( Not-a-Number , konstanta khusus sing nuduhake nilai sing ora ditemtokake).



3. Characterkelas

Kelas kasebut Charactermenarik utamane amarga akeh metode sarana statis sing ngidini sampeyan mriksa apa karakter kalebu macem-macem kategori.

Tuladha

Metode Katrangan
Character.isAlphabetic(int)
Priksa manawa karakter kasebut minangka karakter alfabet
Character.isLetter(char)
Priksa manawa karakter kasebut minangka huruf
Character.isDigit(char)
Priksa manawa karakter kasebut minangka digit
Character.isSpaceChar(char)
Priksa manawa karakter kasebut minangka spasi, baris, utawa break kaca (kode: 12, 13, 14)
Character.isWhitespace(char)
Priksa manawa karakter kasebut minangka spasi putih: spasi, tab, lsp.
Character.isLowerCase(char)
Priksa manawa karakter kasebut huruf cilik
Character.isUpperCase(char)
Priksa manawa karakter kasebut huruf gedhe
Character.toLowerCase(char)
Ngonversi karakter dadi huruf cilik
Character.toUpperCase(char)
Ngonversi karakter dadi huruf gedhe

Fitur saka metode iki yaiku bisa digunakake karo kabeh aksara sing dikenal: Angka Arab diklasifikasikake minangka digit, lsp.



4. Booleankelas

Jinis kasebut Booleanmeh padha karo booleanjinis. Bentenipun minimal.

Ing ngisor iki kita nuduhake versi kelas sing disederhanakake Boolean:

Kode Katrangan
class Boolean
{
   public static final Boolean TRUE = new Boolean(true);
   public static final Boolean FALSE = new Boolean(false);

   private final boolean value;

   public Boolean(boolean value)
   {
      this.value = value;
   }

   public boolean booleanValue()
   {
      return value;
   }

   public static Boolean valueOf(boolean value)
   {
      return (value ? TRUE : FALSE);
   }
}


Konstanta: TRUEи Konstruktor kelas FALSE


variabel Cara ngasilake nilai variabel internal Cara statis iki diowahi dadi lan menyang .

Boolean








trueTRUEfalseFALSE

Jinis kasebut Booleanduwe rong konstanta (loro kolom):

Konstanta kelas Counterpart kanggo jinis boolean Katrangan
Boolean.TRUE
true
bener
Boolean.FALSE
false
palsu

Sampeyan bisa nggarap dheweke kanthi cara sing padha karo jinis boolean:

Kode Cathetan
if (Boolean.TRUE)
{
}
Kelas Booleaniku mung kelas sing bisa ditulis ing sawijining kondisi
Boolean a = Boolean.TRUE;
boolean b = Boolean.TRUE;
boolean c = true;
Kabeh telung variabel padha karo true/TRUE
Boolean a = Boolean.TRUE;
Boolean b = Boolean.TRUE;
if (a == b)
Konstanta bisa dibandhingake nggunakake loro equalslan ==

Iki uga bakal bisa.

Autoboxing kerjane apik ing kene. Tegese sampeyan bisa nggunakake jinis iki kanthi cara sing padha karo jinis boolean- ora ana pitfalls sing kudu diwaspadai.

Kepiye carane ditulis Cara kerjane
Boolean a = true;
Boolean b = true;
Boolean c = false;
boolean d = a;
Boolean a = Boolean.valueOf(true);
Boolean b = Boolean.valueOf(true);
Boolean c = Boolean.valueOf(false);
boolean d = a.booleanValue();

Lan ing kene perbandingan booleanlan Booleanjinis:

boolean a = true;
Boolean b = true; // b will be equal to Boolean.TRUE
Boolean c = true; // c will be equal to Boolean.TRUE

a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // true (compared by reference, but they point to the same object)

Yen sampeyan pancene mbutuhake Booleanobyek independen, mula sampeyan kudu nggawe kanthi jelas:

boolean a = true;
Boolean b = new Boolean(true); // New Boolean object
Boolean c = true; // c will be equal to Boolean.TRUE

a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // false (compared by reference, and they point to different objects)

Conto liyane, ing ngendi kita bakal nggunakake ing Booleannjero if:

Kode Cathetan
Boolean less = (2 < 3);
if (less)
{
   ...
}
Iki bakal ngumpulake lan bisa

Iki bakal ngumpulake, nanging ora bisa!

Kode Cathetan
Boolean less = null;
if (less)
{
   ...
}

Kesalahan . Baris iki bakal mbuwang pangecualian


5. Nilai cache sajrone autoboxing

Ana sawetara pitfalls related kanggo jinis pambungkus integer.

Kaya sing wis dingerteni, yen mbandhingake an intlan Integer, Integerdiowahi dadi int:

Kepiye carane ditulis Cara kerjane
int a = 5;
Integer b = 5;
if (a == b)
{
   ...
}
int a = 5;
Integer b = Integer.valueOf(5);
if (a == b.intValue())
{
   ...
}

Yen sampeyan mbandhingake rong Integerobyek, ora diowahi dadi ints:

Kode Output konsol
Integer a = 500;
Integer b = 500;
int c = 500;

System.out.println(a == b); // Compared by reference
System.out.println(a == c);
System.out.println(b == c);




false
true
true

a == clan , nanging , amarga nalika kita mbandhingaké lan kita mbandhingaké referensi. Kang ateges apa kita bakal nyana.b == ca != bab

Kaget

Nanging yen kita ngganti 500karo 100, banjur kita entuk asil sing beda banget:

Kode Output konsol
Integer a = 100;
Integer b = 100;
int c = 100;

System.out.println(a == b); // Compared by reference
System.out.println(a == c);
System.out.println(b == c);




true
true
true

Masalah ing kene yaiku obyek anyar ora mesthi digawe sajrone autoboxingInteger . Obyek di-cache kanggo nilai -128liwat 127inklusif.

Kelas kasebut Integernduweni array sing didhelikake sing nyimpen obyek: Integer(-128), Integer(-127), ... Integer(126),Integer(127)

Yen sampeyan nulis Integer x = 128, banjur proses autoboxing nggawe obyek anyar, nanging yen sampeyan nulis Integer x = 127, banjur proses autoboxing njupuk obyek sing wis ana saka cache (saka array).

Yen sampeyan ora pengin Integerobyek kasebut teka saka cache, sampeyan kudu nggawe kanthi jelas kanthi nulis:Integer x = new Integer(127);

Kabeh jinis pambungkus duwe cache kayata: Integer, Long, Byte, Short, Boolean. Kanggo Booleanjinis, TRUElan FALSEnilai-nilai kasebut minangka konstanta, mula uga ana cache.