Java - Kopieringsarrayer

Innehållsförteckning
När du väl har behärskat begreppen array och hur man fyller den och hur man går igenom en, kommer vi också säkert att behöva generera kopior av matriser, eftersom vi många gånger kommer att behöva bearbeta innehållet i nämnda array utan att ändra ett original som vi kommer att använda för andra ändamål.
Även om kopiering kan låta som en mycket enkel aktivitet, är det verkligen lite mer komplext än att tilldela array -värde till en annan deklarerad variabel av denna typ.
Kopierar matriser
Som en del av logiken i våra program kommer vi förmodligen någon gång att behöva kopiera en array till en annan variabelFör att kunna arbeta med elementen i en annan instans av programmet, som vi nämnde i början, är inte tilldelningen av variabeln som innehåller matrisen till en annan lämplig lösning.
Antag att vi gör uppdraget enligt följande:
varArrar2 = varArray1;

I det här fallet finns det inget syntaktiskt fel så instruktionen fungerar utan problem, även om vi försöker slinga varArray2 vi kommer att få de värden som vi vet att vi har varArray1, du undrar var problemet är då, problemet är att i denna instruktion vad du gjorde Java var att kopiera referensen till innehållet i den första matrisen, så om vi gör en ändring i någon av de två kommer de båda att se förändringen.
Som vi kan se är detta inte en mycket effektiv metod om vi inte vill kopiera referensen effektivt.
Korrekt sätt att kopiera en arrayDet finns flera sätt att utföra kopia av en matris, med hjälp av en loop som går igenom den första matrisen och tilldelar värdena till den andra, med hjälp av statisk arraycopy -metod vad som ingår i klassen Systemet och slutligen använda klonmetodDet senare är dock lite mer avancerat än vad vi ser här.
Använda en loop
Detta är den enklaste metoden av alla, även om det är lite mödosamt, uppfyller det målet korrekt och tillåter oss att få en ny matris som skulle vara kopian av originalet och helt oberoende av det, för att göra den här kopian vi ska gör följande:
 int [] varArray1 = {2, 3, 1, 5, 10}; int [] varArray2 = new int [varArray1.length]; för (int i = 0; i <varArray1.length; i ++) {varArray2 [i] = varArray1 [i]; } 

Som vi ser är det något väldigt enkelt, vi har vårt första matrisen med ett antal värden som redan är tilldelade i innehållet skapar vi en andra matrisen och vi anger att dess dimension kommer att vara längden på den ursprungliga matrisen och slutligen med a för slinga vi tilldelar vårt nya array det värde som motsvarar positionen för cykeln för den första matrisen.
Med hjälp av arraycopy -metoden
Ett enklare sätt som använder lite mindre kod är den statiska metoden arraycopy, denna metod bryter namnkonventionen för Java men det fungerar korrekt, för att använda det måste vi göra följande:
System.arraycopy (varArray1, varArray1_pos, varArray2, varArray2_pos, längd);

Som vi kan se på en enda rad löser vi problemet, metoden tar emot i sitt första argument den matris som vi ska kopiera, sedan får den utgångsläget varifrån vi ska kopiera, sedan destinationsmatrisen för kopian , dess ursprungliga position och slutligen kopieringslängden:

Slutligen såg vi att kopiering av en array, även om den inte är så enkel som en tilldelning av variabler, är en relativt enkel uppgif.webpt med hjälp av metoderna som beskrivs i den här självstudien.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave