A Java, una matriu és una estructura de dades lineal important que ens permet emmagatzemar diversos valors del mateix tipus.
nick pulos llamp negre
- Les matrius de Java són objectes com tots els altres objectes de les matrius de Java que hereten implícitament de la classe java.lang.Object. Això us permet invocar mètodes definits a Object (com ara toString() equals() i hashCode()).
- Les matrius tenen una propietat de longitud integrada que proporciona el nombre d'elements de la matriu
public class Geeks { public static void main(String[] args) { // initializing array int[] arr = {40 55 63 17 22}; // size of array int n = arr.length; // traversing array for (int i = 0; i < n; i++) System.out.print(arr[i] + ' '); } }
Sortida
40 55 63 17 22
Característiques principals de Arrays
- Emmagatzema primitives i objectes: Les matrius Java poden contenir tant tipus primitius (com int char boolean, etc.) com objectes (com String Integer, etc.)
- Assignació de memòria contigua Quan utilitzem matrius de tipus primitius, els elements s'emmagatzemen en ubicacions contigües. Per als tipus no primitius, les referències d'elements s'emmagatzemen en ubicacions contigües.
- Indexació de base zero: El primer element de la matriu es troba a l'índex 0.
- Longitud fixa: Després de crear una matriu, la seva mida es fixa; no ho podem canviar.
Representació de matriu primitiva en Java
Representació de matriu no primitiva en JavaFuncionament bàsic amb matrius en Java
1. Declaració d'una matriu
La forma general de declaració de matriu és
// Mètode 1:
int arr[];// Mètode 2:
int[] arr;
El tipus d'element determina el tipus de dades de cada element que comprèn la matriu. Igual que una matriu d'enters, també podem crear una matriu d'altres tipus de dades primitius com char float double, etc. o tipus de dades definits per l'usuari (objectes d'una classe).
Nota: És com podem crear una variable de matriu que no existeix una matriu real. Simplement diu al compilador que aquesta variable (int Array) conté una matriu del tipus enter.
2. Inicialització d'un Array en Java
Quan es declara una matriu només es crea una referència d'una matriu. Utilitzem new per assignar una matriu de mida determinada.
int arr[] = nou int[mida];
- La declaració de matriu és generalment estàtica, però si la mida no està definida, la matriu és de mida dinàmica.
- La memòria per a matrius sempre s'assigna dinàmicament (al segment de pila) a Java. Això és diferent de C/C++ on la memòria es pot assignar estàticament o dinàmicament.
- Els elements de la matriu assignats per new s'inicializaran automàticament a zero (per a tipus numèrics) fals (per a booleans) o nul (per a tipus de referència).
Matriu Literal en Java
En una situació en què la mida de la matriu i les variables de la matriu ja es coneixen, es poden utilitzar literals de matriu.
// Declarant la matriu literal
int[] arr = nou int[]{ 12345678910 };
- La longitud d'aquesta matriu determina la longitud de la matriu creada.
- No cal escriure la nova part int[] a les últimes versions de Java.
3. Canvia un element de matriu
Per canviar un element, assigneu un valor nou a un índex específic. L'índex comença amb 0 i acaba a (mida total de la matriu) -1.
// Canviant el primer element a 90
arr[0] = 90;
4. Longitud de la matriu
Podem obtenir la longitud d'una matriu utilitzant la propietat length:
zeenat aman actor
// Obtenint la longitud de la matriu
int n = arr.length;
5. Accés i actualització de tots els elements de la matriu
- Es pot accedir a tots els elements de la matriu mitjançant Java for Loop.
- S'accedeix a cada element de la matriu mitjançant el seu índex.
Accés i actualització de tots els elements de la matriuEl programa Java per il·lustrar la creació d'una matriu d'enters posa alguns valors a la matriu i imprimeix cada valor a la sortida estàndard
Javaclass Geeks { public static void main(String[] args) { // declares an Array of integers. int[] arr; // allocating memory for 5 integers. arr = new int[5]; // initialize the elements of the array // first to last(fifth) element arr[0] = 2; arr[1] = 4; arr[2] = 8; arr[3] = 12; arr[4] = 16; // accessing the elements of the specified array for (int i = 0; i < arr.length; i++) System.out.println('Element at index ' + i + ' : ' + arr[i]); } }
Sortida
Element at index 0 : 2 Element at index 1 : 4 Element at index 2 : 8 Element at index 3 : 12 Element at index 4 : 16
Matrius d'objectes en Java
Es crea una matriu d'objectes com una matriu d'elements de dades de tipus primitiu
Exemple : Aquí estem prenent una classe d'estudiant i creant una matriu d'estudiant amb cinc objectes d'estudiant emmagatzemats a la matriu. Els objectes Student s'han d'instanciar mitjançant el constructor de la classe Student i les seves referències s'han d'assignar als elements de la matriu.
class Student { public int roll_no; public String name; Student(int roll_no String name){ this.roll_no = roll_no; this.name = name; } } public class Geeks { public static void main(String[] args){ // declares an Array of Student Student[] arr; // allocating memory for 5 objects of type Student. arr = new Student[5]; // initialize the elements of the array arr[0] = new Student(1 'aman'); arr[1] = new Student(2 'vaibhav'); arr[2] = new Student(3 'shikar'); arr[3] = new Student(4 'dharmesh'); arr[4] = new Student(5 'mohit'); // accessing the elements of the specified array for (int i = 0; i < arr.length; i++) System.out.println('Element at ' + i + ' : { ' + arr[i].roll_no + ' ' + arr[i].name+' }'); } }
Sortida
Element at 0 : { 1 aman } Element at 1 : { 2 vaibhav } Element at 2 : { 3 shikar } Element at 3 : { 4 dharmesh } Element at 4 : { 5 mohit } Què passa si intentem accedir a elements fora de la mida de la matriu?
JVM llança ArrayIndexOutOfBoundsException per indicar que s'ha accedit a la matriu amb un índex il·legal. L'índex és negatiu o superior o igual a la mida d'una matriu.
El codi següent mostra què passa si intentem accedir a elements fora de la mida de la matriu:
Javapublic class Geeks { public static void main(String[] args) { int[] arr = new int[4]; arr[0] = 10; arr[1] = 20; arr[2] = 30; arr[3] = 40; System.out.println( 'Trying to access element outside the size of array'); System.out.println(arr[5]); } }
Sortida:
Sortida d'elements fora de la mida de la matriuPassant matrius a mètodes
Igual que les variables, també podem passar matrius als mètodes. Per exemple, el programa següent passa la matriu al mètode suma per calcular la suma dels valors de la matriu.
Exemple:
Javapublic class Geeks { // Driver method public static void main(String args[]) { int arr[] = { 3 1 2 5 4 }; // passing array to method m1 sum(arr); } public static void sum(int[] arr) { // getting sum of array values int sum = 0; for (int i = 0; i < arr.length; i++) sum += arr[i]; System.out.println('sum of array values : ' + sum); } }
Sortida
sum of array values : 15
Explicació
- Aquest programa Java demostra com passar una matriu a un mètode.
- Es declara i inicialitza una matriu d'enters arr al mètode principal.
- El mètode sum() es crida amb arr com a argument.
- Dins del mètode sum() s'afegeixen tots els elements de la matriu mitjançant un bucle for.
- La suma final s'imprimeix a la consola.
Devolució de matrius de mètodes
Com és habitual, un mètode també pot retornar una matriu. Per exemple, el programa següent retorna una matriu del mètode m1.
Exemple:
Javaclass Geeks { // Driver method public static void main(String args[]) { int arr[] = m1(); for (int i = 0; i < arr.length; i++) System.out.print(arr[i] + ' '); } public static int[] m1() { // returning array return new int[] { 1 2 3 }; } }
Sortida
1 2 3
Avantatges de les matrius Java
- Accés eficient: L'accés a un element pel seu índex és ràpid i té una complexitat de temps constant O(1).
- Gestió de la memòria: Les matrius tenen una mida fixa que fa que la gestió de la memòria sigui senzilla i previsible.
- Organització de dades: Les matrius ajuden a organitzar les dades d'una manera estructurada, facilitant la gestió dels elements relacionats.
Desavantatges de les matrius Java
- Mida fixa: Un cop creada una matriu, la seva mida no es pot canviar, cosa que pot provocar un malbaratament de memòria si la mida es sobreestima o un emmagatzematge insuficient si es subestima.
- Homogeneïtat del tipus: Les matrius només poden emmagatzemar elements del mateix tipus de dades que poden requerir un maneig addicional per a diferents tipus de dades.
- Inserció i eliminació: Inserir o suprimir elements, especialment al centre d'una matriu, pot ser costós, ja que pot requerir desplaçar elements.
Publicacions relacionades
- Jagged Array a Java
- Per a cada bucle a Java
- Classe de matrius en Java