1. Sarmalayıcı türlerinin listesi

Java'nın sınıf olmayan türler olan 8 ilkel türü olduğunu biliyorsunuz. Bir yandan, bu iyi — basitler ve az yer kaplıyorlar. Öte yandan, bazen dersler tam ihtiyacımız olan şeydir. Bunun tam olarak neden olduğunu bir sonraki derste öğreneceksiniz.

Peki ne yapılabilir?

Java'nın beşinci sürümünden başlayarak, her ilkel tür bir ikiz sınıf kazandı. Bu tür sınıfların her biri, belirli bir türde bir değere sahip tek bir alanı depolar. Bu sınıflara , sınıflardaki ilkel değerleri sardıkları için sarmalayıcı türleri denir .

İşte bu türlerin bir listesi. Hiç biliyor musun?

ilkel tip sarmalayıcı sınıfı
byte
Byte
short
Short
int
Integer
long
Long
float
Float
double
Double
char
Character
boolean
Boolean

İlkel türlerin adları küçük harfle başlar, ancak sarmalayıcı sınıfların adları büyük harfle başlar. Bazı sınıf adları da biraz daha uzundur: Integerinstead of intи Characterinstead of char.

Sarmalayıcı sınıfların tüm nesneleri değiştirilemez ( immutable ).

Sınıf için basitleştirilmiş kod Integerşuna benzer:

kod Not
public class Integer
{
   private int value;

   Integer(int x)
   {
      this.value = x;
   }

   public int intValue()
   {
      return this.value;
   }

   public static Integer valueOf(int x)
   {
      return new Integer(x);
   }
}


Değişken

Oluşturucu Yöntem




bir değer döndürür




Statik yöntem bir değişken Integeriçin yeni bir nesne oluştururint

int2. an'ı an'a dönüştürmeInteger

Sarıcı türleri, ilkel kardeşlerinin eşdeğerleri olarak kabul edilir: bir ilkel türe karşılık gelen bir sarmalayıcı nesneyi kolayca oluşturabilirsiniz.

İlkel türlerin karşılık gelen sarmalayıcı türleriyle nasıl etkileşime girdiğini analiz etmek için int türünü örnek olarak kullanalım. intan'dan an'a ve tam tersi dönüştürme kodu Integerşöyle görünür:

intan'ı an'a dönüştürmek için Integerşu kodu yazmanız gerekir:

Integer name = new Integer(value);

Nerede namebir değişkenin adı Integerve valuesarılmış değerdir int.

Örnekler:

kod Not
Integer age = new Integer(18);
Integer hundred = new Integer(100);
Integer zero = new Integer(0);

Ve an'ı Integeran'a dönüştürmek için intşu kodu yazmanız gerekir:

int name = variable.intValue();

Nerede namebir değişkenin adıdır intve variablebir nesneye referanstır Integer.

Örnekler:

kod Not
Integer age = new Integer(18);
int x = age.intValue();

x == 18
Integer hundred = new Integer(100);
int y = hundred.intValue();

y == 100
Integer zero = new Integer(0);
int z = zero.intValue();


z == 0
int i = 110;
Integer zero = new Integer(i);
int z = zero.intValue();

z == 110

3. Otomatik kutulama ve kutudan çıkarma

Ancak tiple yapılan basit işlemleri bile Integeryazmak kolay değildir.

Daha önce de söylediğimiz gibi, Integertip değiştirilemez ( immutable ). IntegerYeni bir değere sahip bir nesne oluşturmak için int, açıkça yeni bir nesne oluşturmanız gerekir Integer. intBununla birlikte, bir nesnenin içinde saklanan değeri elde etmek kolaydır Integer- sadece intValue()yöntemi çağırın.

Örnek:

kod Tanım
Integer a = Integer.valueOf(5);
int b = a.intValue();
Integer c = new Integer(b + 5)
5Bir Integernesneye sarın
Nesneden değeri alın Yeni bir nesne oluşturun Integer( 10'a eşit)
Integer

Bu oldukça hantal bir kod, sence de öyle değil mi?

Java'nın yaratıcıları böyle düşündüler ve derleyiciye bu işlemleri otomatik olarak nasıl yapacaklarını öğrettiler. intan'ın an'a otomatik Integerolarak dönüştürülmesine otomatik kutulama (değerin otomatik olarak bir kutuya yerleştirilmesi) ve ters işleme (an'ın Integeran'a dönüştürülmesi) kutudan çıkarmaint adı verilir .

Senin kodun Derleyicinin gördüğü şey
Integer a = 10;
Integer a = Integer.valueOf(10);
int b = a;
int b = a.intValue();
Integer c = a + b;
Integer c = Integer.valueOf(a.intValue() + b);

Otomatik kutulama ve kutudan çıkarma sayesinde, intbir Integerdeğişkene güvenli bir şekilde a atayabilir ve bunun tersini de yapabilirsiniz. intve türleri arasında ayrım yapmadan herhangi bir karmaşıklıktaki ifadeleri yazabilirsiniz Integer.

Örnekler:

kod Derleyici ne üretecek
Integer a = 5;
int b = a;
Integer c = a + b;
int d = a + b + c;
Integer a = Integer.valueOf(5);
int b = a.intValue();
Integer c = Integer.valueOf(a.intValue() + b);
int d = a.intValue() + b + c.intValue();
Integer a = 5;
int b = 5;

if (a == b)
{
   ...
}
Integer a = Integer.valueOf (5);
int b = 5;

if (a.intValue() == b)
{
   ...
}


4. Sarma değişkenlerini karşılaştırma

Otomatik kutulama ve kutudan çıkarma basit ve şeffaf süreçlerdir. İfadeleri gerektiği gibi kullanırız ve yöntemi gerektiği gibi new Integer()çağırırız .intValue()

Programcı olarak sizin için her şey güzel ve kolay çalışıyor. an ve an'ı karşılaştırırsanız , karşılaştırmanın değerlere değil referansa dayalı olduğunu unutmayın .IntegerInteger

kod Konsol çıkışı
Integer a = 1000;
Integer b = 1000;

System.out.println(a == b);



false
Integer a = 1000;
Integer b = 1000;

System.out.println(a.equals(b));



true

ve değişkenleri adeğerleri bdepolamaz int. Nesnelere referansları saklarlar. Bu, onları doğru bir şekilde nasıl karşılaştıracağınızı hatırlamanın önemli olduğu anlamına gelir:

Yanlış Sağ
Integer a = 1000;
Integer b = 1000;
if (a == b)
{
   ...
}
Integer a = 1000;
Integer b = 1000;
if (a.equals(b))
{
   ...
}