1. Arrays
sınıf
Daha önce belirttiğimiz gibi, diziler programlamada çok kullanışlıdır ve sıklıkla kullanılır.
Java'nın yaratıcıları, Java programcılarının dizilerle çalışırken genellikle aynı kodu yazdıklarını çok çabuk fark ettiler. Örneğin, bir dizinin bir parçasını başka bir diziye kopyalamak, bir dizinin her hücresini aynı değerle doldurmak için kod yazmak, bir dizinin içeriğini uygun bir biçimde görüntülemek vb.
Bu nedenle , diziyle ilgili en popüler eylemleri içine yerleştiren özel Arrays
sınıfı (tam adı ) oluşturdular .java.util.Arrays
Her durum için birçok yöntemi vardır, ancak önce bunlardan sadece 10 tanesini ele alacağız — en basit ve en sık kullanılan.
2.Arrays.toString()
Bakacağımız ilk yöntemin adı Arrays.toString()
. Ama önce, biraz arka plan.
Java'daki her dizinin toString()
, 'dizinin metinsel temsilini' döndüren bir yöntemi vardır. Aşağıdaki ifadeyi kullanarak bir dizinin metinsel temsilini elde edebilirsiniz:
String str = name.toString();
name
Dizi değişkeninin adı nerede ve str
dizinin dize gösterimini saklayacak değişkenin adı.
Ancak, yöntemi kullanarak diziyi ekrana yazdırmaya çalışırsanız , büyük olasılıkla şöyle bir şey göreceksiniz:System.out.println(name)
I@37afeb11
İlk harf I
bir dizi olduğu anlamına gelir int
ve sonraki semboller@
dizinin bellekteki adresidir. Bir yandan bu tam olarak dizi değişkeninde depolanan bilgidir, ancak diğer yandan farklı bir şey bekliyorduk değil mi?
Dizideki değerleri görmek istedik! Arrays.toString()
İşte tam da bu yüzden , bir dizinin değerlerini görüntülemek için bir yöntem geliştirdiler . Biz şöyle diyoruz:
String str = Arrays.toString(name);
Örnekler:
|
Değişken str şu dizeyi içerecektir:
|
|
Değişken str şu dizeyi içerecektir:
|
|
Değişken str şu dizeyi içerecektir:
|
3.Arrays.deepToString()
Ancak iki boyutlu bir diziyi bir dizge (göstermek için) yöntemine dönüştürmeye çalışırsanız using the Arrays.toString()
, tanıdık bir şey görürsünüz:
[I@37afeb11, I@37afeb21, I@37afeb31]
Bunun nedeni, iki boyutlu bir dizinin hücrelerinin tek boyutlu dizilere referansları saklamasıdır. Ve tek boyutlu diziler nasıl bir diziye dönüştürülür? Tam olarak yukarıda gördüğünüz gibi.
Ne yapılabilir? İki boyutlu bir diziyi doğru bir şekilde nasıl görüntüleriz?
Bu amaçla, Arrays
sınıfın başka bir özel yöntemi vardır — deepToString()
. Aramak şöyle görünür:
String str = Arrays.deepToString(name);
Bu yöntem, iki boyutlu, bir boyutlu, üç boyutlu veya genel olarak herhangi bir boyuttaki dizileri geçirebilir ve her zaman dizinin öğelerini görüntüler.
Not: Yöntem Arrays.deepToString()
, tek boyutlu ilkel dizilerle çalışmaz (örneğin, int[]
).
Örnekler:
|
Değişken str şu dizeyi içerecektir:
|
|
Değişken str şu dizeyi içerecektir:
|
|
Değişken str şu dizeyi içerecektir:
|
4.Arrays.equals()
Dizileri ekranda nasıl görüntüleyeceğimizi bulduk, peki ya dizileri karşılaştırmaya ne dersiniz?
Dizeleri karşılaştırmak için equals
ve equalsIgnoreCase
yöntemlerimiz var, ancak dizilerin hangi yöntemleri var?
İyi haber şu ki, dizilerin bir equals
yöntemi var. Kötü haber ise dizilerin içeriklerini karşılaştırmamasıdır. Diziler yöntemi equals
, operatörle aynı şeyi yapar ==
- referansları karşılaştırır. Örnekler:
Örnekler:
|
false (referanslar eşit değildir) |
|
yöntemi equals basitçe arrays iki dizinin referanslarını karşılaştırır. false (referanslar eşit değildir) |
Ne yapılabilir? Dizileri içeriklerine göre nasıl karşılaştırırız?
Ve yine Arrays
imdadımıza yetişiyor, ya da daha doğrusu Arrays.equals()
yöntemi. Biz buna şöyle deriz:
Arrays.equals(name1, name2)
Yöntem, true
diziler eşit uzunluktaysa ve öğeleri eşitse döndürür. Aksi halde geri döner false
.
Örnekler:
|
yöntemi equals basitçe arrays iki dizinin referanslarını karşılaştırır. false (referanslar eşit değildir) |
|
true (içerikler eşittir) |
|
false (dizilerin içerikleri farklıdır) |
5.Arrays.deepEquals()
Ve muhtemelen zaten tahmin ettiğiniz gibi, Arrays.equals
yöntem iki boyutlu diziler için doğru çalışmaz: iki boyutlu dizileri, öğeleri tek boyutlu dizilerin adresleri olan tek boyutlu bir dizi gibi ele alır.
Böylece, çok boyutlu dizileri ( n = 1, 2, 3,...
) doğru bir şekilde karşılaştırmak için bir yöntem buldular Arrays.deepEquals()
. Aramak şöyle görünür:
Arrays.deepEquals(name1, name2)
Yöntem döndürürtrue
diziler eşit uzunluktaysa ve elemanları eşitse. Aksi takdirde geri dönerfalse
. Dizinin içindeki öğeler de diziyse, bu durumda Arrays.deepEquals()
onları karşılaştırmak için yöntem kullanılır ve bu böyle devam eder.
Örnekler:
|
yöntemi equals basitçe arrays iki dizinin referanslarını karşılaştırır. false (referanslar eşit değildir) |
|
Yöntem , referansları depolayan tek boyutlu diziler olarak karşılaştırır Arrays.equals . Farklı referanslar içerirler. (dizilerin içerikleri eşit değildir) x1 x2 false |
|
true (içerikler eşittir) |
GO TO FULL VERSION