1. Integersınıf

Integerbir sınıf olması bakımından da iyidir, yani alanları ve yöntemleri olabilir. Ve elbette, onlara sahip. Birçoğu - düzinelerce. Burada en temel olanları ele alacağız.

Sınıfın, Integertürün olası maksimum ve minimum değerlerini içeren iki alanı vardır int:

Alan Tanım
Integer.MAX_VALUE
intTürün mümkün olan maksimum değeri
Integer.MIN_VALUE
intTürün mümkün olan minimum değeri

intBazen bir değişkene mümkün olan en küçük veya en büyük değeri atamak istersiniz . Kodunuzu anlaşılmaz sabitlerle karıştırmamak için bunu aşağıdaki gibi çok net bir şekilde yazabilirsiniz:

kod Tanım
int min = Integer.MIN_VALUE;
min == 0x80000000

Sınıfın Integerayrıca bazı ilginç yöntemleri var. İşte buradalar:

Yöntemler Tanım
String Integer.toHexString(int)
Sayının onaltılık gösterimi olan bir dize döndürür
String Integer.toBinaryString(int)
Sayının ikili temsili olan bir dize döndürür
String Integer.toOctalString(int)
Sayının sekizlik gösterimi olan bir dize döndürür
Integer Integer.valueOf(int i)
Geçileni intbir Integernesneye sarar
Integer Integer.parseInt(String)
Geçirilen dizeden elde edilen sayıyı döndürür

Daha önce statik yöntemle karşılaştınız Integer.parseInt(). Nasıl çalıştığını hatırlayalım:

int name = Integer.parseInt(string);

Yönteme bir sayı (yalnızca rakam) içeren bir dize iletilirse parseInt(), dizeyi ayrıştırır ve içerdiği sayıyı döndürür.

Yöntemlerin geri kalanı da yararlıdır. Örneğin, bazıları iletilen bir sayıyı, sayının ikili, sekizli veya onaltılı gösterimini içeren bir dizgeye dönüştürebilir.



2. Doublesınıf

Genel olarak, Doublesınıf sınıfa benzer , yalnızca a yerine Integera'yı sarar . Bizi de ilgilendirecek alanlar ve metotlar var. Bunlardan birkaçını düşünün:doubleint

Sınıfın Doublealtı ilginç alanı vardır:

Alan Tanım
double Double.NEGATIVE_INFINITY
negatif sonsuzluk
double Double.POSITIVE_INFINITY
pozitif sonsuzluk
int Double.MIN_EXPONENT
Mümkün olan minimum üs (2 x )
int Double.MAX_EXPONENT
Mümkün olan maksimum üs (2 x )
double Double.MIN_VALUE
doubleTürün mümkün olan minimum değeri
double Double.MAX_VALUE
doubleTürün mümkün olan maksimum değeri

Sonsuzluk

-1.0ile bölerseniz 0.0, negatif sonsuz elde edersiniz. 1.0ile bölerseniz 0.0, pozitif sonsuz elde edersiniz. a'yı yalnızca sıfıra bölmekle kalmaz double, aynı zamanda bu işlemlerin sonuçlarını depolamak için de kullanabilirsiniz.

a'nın üssüdouble

Üssü anlamak kolaydır. Dahili olarak, bir çift bir mantis ve bir üsten oluşur. Ama burada üssün değeri değil ama . Böylece, üs artarsa , sayının toplam değeri iki katına çıkar.10x2x1

MIN_EXPONENT == -1024, yani yaklaşık olarak eşittir2-102410-308

Ve tabii ki, Doublesınıfın ilginç yöntemleri var:

Yöntemler Tanım
String Double.toHexString(double)
Sayının onaltılık gösterimi olan bir dize döndürür
boolean Double.isInfinite(double)
Geçen sayının sonsuz olup olmadığını kontrol eder.
boolean Double.isNaN(double)
Geçilen sayının olup olmadığını kontrol ederNaN
Double Double.valueOf(double)
Geçileni doublebir Doublenesneye sarar
Double Double.parseDouble(String)
Geçirilen dizeden elde edilen sayıyı döndürür

İlginç bir şekilde, geçen sayının pozitif veya negatif sonsuz olması durumunda isInfinite()dönen bir yöntem var .true

Yöntem isNaN()benzerdir - iletilen sayının NaN( Not-a-Number , tanımsız bir değeri gösteren özel bir sabit) olup olmadığını kontrol eder.



3. Charactersınıf

Sınıf Character, öncelikle, karakterlerin çeşitli kategorilere ait olup olmadığını kontrol etmenizi sağlayan çok sayıda statik yardımcı program yöntemiyle ilgi çekicidir.

örnekler

Yöntemler Tanım
Character.isAlphabetic(int)
Bir karakterin alfabetik bir karakter olup olmadığını kontrol eder
Character.isLetter(char)
Karakterin bir harf olup olmadığını kontrol eder
Character.isDigit(char)
Karakterin rakam olup olmadığını kontrol eder
Character.isSpaceChar(char)
Karakterin boşluk mu, satır sonu mu yoksa sayfa sonu mu olduğunu kontrol eder (kodlar: 12, 13, 14)
Character.isWhitespace(char)
Karakterin boşluk olup olmadığını kontrol eder: boşluk, sekme vb.
Character.isLowerCase(char)
Karakterin küçük harf olup olmadığını kontrol eder
Character.isUpperCase(char)
Karakterin büyük harf olup olmadığını kontrol eder
Character.toLowerCase(char)
Karakteri küçük harfe dönüştürür
Character.toUpperCase(char)
Karakteri büyük harfe dönüştürür

Bu yöntemlerin bir özelliği, bilinen tüm alfabelerle çalışmalarıdır: Arap rakamları rakam olarak sınıflandırılır, vb.



4. Booleansınıf

Tip , tip Booleanile hemen hemen aynıdır boolean. Farklılıklar minimumdur.

Aşağıda sınıfın basitleştirilmiş bir versiyonunu gösteriyoruz Boolean:

kod Tanım
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);
   }
}


Sabitler: TRUEи FALSE


Değişken

Booleansınıf oluşturucu




Yöntem, dahili değişkenin değerini döndürür



Bu statik yöntem, ve ' ye truedönüştürür . TRUEfalseFALSE

Türün Booleaniki sabiti vardır (iki alan):

Sınıfın sabitleri Boole türünün karşılığı Tanım
Boolean.TRUE
true
doğru
Boolean.FALSE
false
YANLIŞ

Onlarla, türle çalıştığınız şekilde çalışabilirsiniz boolean:

kod Not
if (Boolean.TRUE)
{
}
Sınıf Boolean, bir koşul içinde yazılabilen tek sınıftır.
Boolean a = Boolean.TRUE;
boolean b = Boolean.TRUE;
boolean с = true;
trueÜç değişkenin tümü /' ye eşittirTRUE
Boolean a = Boolean.TRUE;
Boolean b = Boolean.TRUE;
if (a == b)
Sabitler her ikisi kullanılarak karşılaştırılabilir equalsve ==

Bu da işe yarayacaktır.

Otomatik kutulama burada harika çalışıyor. Bu, bu türü, türle aynı şekilde kullanabileceğiniz anlamına gelir boolean- dikkat edilmesi gereken hiçbir tuzak yoktur.

nasıl yazılır Nasıl çalışır
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();

booleanVe burada ve türlerinin bir karşılaştırması Boolean:

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)

Gerçekten bağımsız bir nesneye ihtiyacınız varsa Boolean, onu açıkça oluşturmanız gerekir:

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)

Booleana inside of an kullanacağımız bir örnek daha if:

kod Not
Boolean less = (2 < 3);
if (less)
{
   ...
}
Bu derlenecek ve çalışacak

Bu derlenecek, ancak işe yaramayacak!

kod Not
Boolean less = null;
if (less)
{
   ...
}

hata _ Bu satır bir istisna atar


5. Otomatik kutulama sırasında değerleri önbelleğe alma

Tamsayı sarmalayıcı türleri ile ilgili bazı tuzaklar vardır.

intBildiğiniz gibi, an ve an'ı karşılaştırırsak Integer, Integeran'a dönüştürülür int:

nasıl yazılır Nasıl çalışır
int a = 5;
Integer b = 5;
if (a == b)
{
   ...
}
int a = 5;
Integer b = Integer.valueOf(5);
if (a == b.intValue())
{
   ...
}

İki nesneyi birbiriyle karşılaştırırsanız Integer, s'ye dönüştürülmezler int:

kod Konsol çıkışı
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 == cve , ancak , çünkü karşılaştırdığımızda ve referansları karşılaştırdığımızda. Esasen beklediğimiz şey buydu.b == ca != bab

Sürpriz

500Ancak ile değiştirirsek 100, tamamen farklı bir sonuç elde ederiz:

kod Konsol çıkışı
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

Buradaki sorun, otomatik kutulama sırasında her zaman yeni bir Integernesnenin gerçekten yaratılmamasıdır . -128Nesneler, kapsayıcı aracılığıyla değerler için önbelleğe alınır 127.

Sınıfın Integernesneleri depolayan gizli bir dizisi vardır: Integer(-128), Integer(-127), ... Integer(126),Integer(127)

yazarsanız Integer x = 128, otomatik kutulama işlemi yeni bir nesne oluşturur, ancak yazarsanız Integer x = 127, otomatik kutulama işlemi mevcut nesneyi önbellekten (diziden) alır.

IntegerNesnenin önbellekten gelmesini istemiyorsanız , şunu yazarak açıkça oluşturmanız gerekir:Integer x = new Integer(127);

Tüm sarıcı türlerinin böyle bir önbelleği vardır: Integer, Long, Byte, Short, Boolean. Tür için Boolean, onun TRUEve FALSEdeğerlerinin her ikisi de sabittir, dolayısıyla bunlar da temelde önbelleğe alınır.