Java'da Dizi Uzunluğu


101

Aşağıda gösterildiği gibi bir dizi tanımladım:

int[] arr = new int[10];

Sonra diziye aşağıdaki değerleri atadım:

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;

Sonra bir tamsayı değişkeni bildirdim ve başlattım:

int arrayLength = arr.length;

Bu, gerçek boyutu bulmak için yararlı olacaktır, ancak dizinin mantıksal boyutunu bulmanın herhangi bir yöntemi var mı?

Yanıtlar:



71

Her şeyden önce, lengthbir özelliktir, yani onun arr.lengthyerine olacaktır arr.length().

Ve beyan edilen boyut olan 10'u döndürecektir. Açıkça bildirmediğiniz öğeler 0 ile başlatılır.


Long [] Java (67108980) dizi türünde length () çağrılamıyor
Alessandro Ornano

22

Bir dizinin uzunluğunu bulmak Aiçin lengthözelliği kullanmalısınız . O gibidir A.lengthkullanmayın, A.length()onun başlıca dize ilgili nesnelerin boyutu için kullandı.

görüntü açıklamasını buraya girin

Length özelliği, başlatma sırasında her zaman diziye ayrılan toplam alanı gösterecektir.

Bu tür sorunlardan herhangi biriyle karşılaşırsanız, basit yol onu çalıştırmanızdır. Mutlu Programlama!


6

Diziler statik bellek ayırmadır, bu nedenle bir tamsayı dizisini başlatırsanız:

int[] intArray = new int[15];

Kaç indeks doldurulmuş olursa olsun uzunluk her zaman 15 olacaktır .

Ve başka bir şey, bir tamsayı dizisini başlattığınızda, tüm dizinler "0" ile doldurulacaktır.


5

Java'da, "gerçek" ve "mantıksal" boyutunuz aynıdır. Çalışma zamanı, tüm dizi yuvalarını ayırma üzerine varsayılan değerlerle doldurur. Yani, sizin a10'unuz var.


5

Bu durumda, arr.length, ayırdığınız dizinin boyutu olan 10'u döndürecektir. Bu sabit uzunlukta bir dizi olduğu için mantıksal boyut burada gerçekten geçerli değildir.

Diziyi başlattığınızda:

int[] arr = new int[10];

Java, 10 öğeli bir dizi oluşturacak ve bunların tümünü 0 olarak başlatacaktır . Bu ve diğer ilkel türler için başlangıç ​​değerlerinin ayrıntıları için Java dil spesifikasyonuna bakın .


4
int[] arr = new int[10];

arrintboyuta sahip bir tür dizisidir 10. Bir dizi 10unsurdur. Bir diziyi varsayılan olarak başlatmazsak, dizi elemanları varsayılan değeri içerir. İnt dizisi durumunda varsayılan değer 0.

uzunluk, bir dizi için geçerli olan bir özelliktir.
burada arr.lengthverecek 10.


3

'

int dizi [] = yeni int [3]; dizi.length;

işte burada 3 bellek alanına sahip bir dizi oluşturduk ... aslında böyle görünüyor

0. 1. 2. ...........> Dizin 2 4 5 ...........> Sayı

Gördüğünüz gibi bu dizinin boyutu 3'tür, ancak dizinin dizini yalnızca 2'ye kadardır, çünkü herhangi bir dizi 0. dizinle başlar.

dizinin uzunluğu 3 olduğu için ikinci deyim 'çıktı 3 olmalıdır ... Lütfen dizin değeri ile dizinin uzunluğu arasında kafanızı karıştırmayın ....

şerefe!


2
  int arr[]={4,7,2,21321,657,12321};
  int length =arr.length;
  System.out.println(length); // will return 6

  int arr2[] = new int[10];
   arr2[3] = 4;
  int length2 =arr2.length;
  System.out.println(length2); // // will return 10. all other digits will be 0 initialize because staic memory initialization

1

Dizinin gerçek boyutunu içerecektir, çünkü bu, diziyi bildirdiğiniz zaman olması için başlattığınız şeydir. Java, bir dizinin "mantıksal" boyutu kavramına sahip değildir, söz konusu olduğu sürece 0 varsayılan değeri, manuel olarak ayarladığınız değerler kadar mantıksaldır.


1

Tahsis edilen boyutu, 10'u içerir. Kalan dizinler 0 olan varsayılan değeri içerecektir.


1

Dizinin mantıksal boyutunu istiyorsanız, dizideki tüm değerleri gezebilir ve sıfıra karşı kontrol edebilirsiniz. Sıfır değilse değeri artırın ve bu mantıksal boyut olacaktır. Dizi boyutu sabit olduğundan, herhangi bir dahili yönteminiz yoktur, koleksiyonlara bir göz atmanız gerekebilir.


Bu sadece "0'ın geçerli bir değer olmadığını varsayıyorum" boyutudur ve bu yararlıysa biraz şüphelidir.
Tom

Dizinin uzunluğunu elde etmek için bir fikir buldum (0'lar geçersizdir). Dediğim gibi, koleksiyonları daha hassas veri işleme için kullanabilirsiniz.
2016

1

Olmalı:

int a = arr.length;

Parantezlerden kaçınılmalıdır.


5
Yığın taşmasına hoş geldiniz! Bu soru bir yıldan daha eski bir soru olduğu ve zaten altı başka cevabı olduğu için, bundan daha uzun bir cevap bekliyorum. Dahası, sorunun konusunu yanıtlamıyorsunuz - yalnızca bir yanıtta (soruyu yanıtlayan) ve bir soru yorumunda zaten hedeflenmiş olan bir yazım hatasını düzeltiyorsunuz .
John Dvorak

0

Java dizileri aslında boyut olarak sabittir ve diğer yanıtlar .length'in beklediğiniz şeyi gerçekten nasıl yapmadığını açıklar. Sorunuz göz önüne alındığında, kullanmak isteyebileceğiniz şeyin bir ArrayList olduğunu, yani büyüyüp küçülebilen bir dizi olduğunu eklemek istiyorum:

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

Burada .size () yöntemi size listenizdeki öğelerin sayısını gösterecek ve bir şeyler ekledikçe bunu artırabilirsiniz.


0

"mantıksal boyut" derken dizinin dizinini kastediyorsanız, o zaman basitçe int arrayLength = arr.length-1; dizi dizini "0" ile başladığından, mantıksal veya "dizi dizini" her zaman gerçek boyuttan "bir" kadar küçük olacaktır.


0

Diziler, java'da derleme sırasında bellek olarak ayrılırlar, bu nedenle statiktirler, açık bir şekilde ayarlanmayan veya değiştirilmeyen öğeler varsayılan değerlerle ayarlanır. Bunun gibi bir kod kullanabilirsiniz, ancak varsayılan değerleri saymadığı için tavsiye edilmese de, onları açıkça bu şekilde başlatsanız bile, hatanın aşağısında hatalara neden olması muhtemeldir. Diğerlerinin dediği gibi, gerçek boyut ararken, ".length ()" yerine ".length" kullanılmalıdır.

public int logicalArrayLength(type[] passedArray) {
    int count = 0;
    for (int i = 0; i < passedArray.length; i++) {
        if (passedArray[i] != defaultValue) {
            count++;
        }
    }
    return count;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.