Wątek przeniesiony 2014-09-03 13:22 z Java przez bogdans.

Metoda Arrays.sort sortuje od razu dwie tablice

0

Więc, rozpocząłem swoją przygodę z JAVĄ, i na starcie mam problem. Prosty przykład

import java.util.Arrays;


public class Test {

	public static void main(String[] args) {
		int[] arr_in  = {2,3,4,1};
		int[] arr_sort = new int[4];
		
		arr_sort = arr_in;
		Arrays.sort(arr_sort);
		for(int i = 0; i < 4; i++){
			System.out.println(arr_sort[i]+" <---> "+arr_in[i]);
		}
       }

}

Output

1 <---> 1
2 <---> 2
3 <---> 3
4 <---> 4

Więc pytanie:
Czemu Arrays.sort posortował mi Od razu 2 tablicy (arr_sort oraz arr_in)

poprawienie tytułu i tagów wątku, dodanie znacznika <code> - furious programming

1
Necronus napisał(a):

Czemu Arrays.sort posortował mi Od razu 2 tablicy (arr_sort oraz arr_in)

Temu:

arr_sort = arr_in; 
0

Powinno być tak:

        int[] arr_in  = {2,3,4,1};
        int[] arr_sort = {2,3,4,1};
 
        Arrays.sort(arr_sort);

lub tak:

        int[] arr_in  = {2,3,4,1};
        int[] arr_sort = new int[4];
        for(int i=0;i<a4;i++)
        { 
            arr_sort[i] = arr_in[i];
        }
        Arrays.sort(arr_sort);
0

W takim razie nie rozumiem, jak przypisze do jednej zmiennej drugą np:

int a = 5;
int b;
b = a;

to wszystkie działania na zmiennej "b" będą wykonywać sie na zmiennej a?

Jeżeli tak to jak zrobić, żeby tak się nie działo?

dodanie znacznika <code class="java"> - furious programming

2

Nie, takie nieoczekiwane dla Ciebie zachowanie występuje tylko dla zmiennych obiektowych. Dla typów prostych (np. int) jest tak jak się spodziewałeś.

0

Dzieki za odpowiedzi :)

0

W Javie wszystkie zmienne są albo prymitywami albo referencjami, dlatego przypisanie:

obiektA = obiektB

w rzeczywistości kopiuje referencję ze zmiennej obiektB do zmiennej obiektA i od teraz obie zmienne wskazują na ten sam obiekt.

W Javie (języku) nie ma kopiowania obiektów. Żeby skopiować obiekt, musisz utworzyć nowy i wypełnić go danymi ze starego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1