Problemas com vetores em java

Eu estou com um problema meio estranho em java. Logo abaixo dei um exemplo do que está ocorrendo com meus programas:

package test;

import java.util.Scanner;

public class Test1 {

public static void main(String[] args) {
	Scanner leitor=new Scanner(System.in);

	int vet[]=new int[2];
	vet[0]=4;
	vet[1]=6;

	int vet2[];
	vet2=vet;

	vet2[0]=1;
	vet2[1]=2;

	System.out.println(vet[0]+" "+vet[1]);
	
}

}

Saída:
1 2

O System.out.println(vet[0]+" "+vet[1]) não deveria retornar 4 e 6, em vez de 1 e 2, já que não há nenhum comando que faça o vet mudar seus valores? Eu notei que 1 e o 2 são valores de vet2 que foram mudados. Alguém poderia me dizer o que está acontecendo e como resolver isso? Nos programas em questão, eu preciso que um vetor pegue os valores de outro vetor, de uma forma rápida, como se fosse vet2=vet, então gostaria de uma solução que não tirasse isso.

Quando você faz:

Você declarou uma variável inteira do tipo array que recebe o endereço de vet. Logo, vet2 está ‘trabalhando’ sobre vet, já que aponta para o mesmo local na memória. Assim, ao indicar:

na verdade está alterando os valores de vet para 1 e 2 respectivamente nos índices 0 e 1. Veja:

image

Os variáveis fazem referência à mesma memória, no caso: [I@15db9742. O resultado foi produzido pelo seguinte código:

public class Teste {
	public static void main(String[] args){
		int[] vet = new int[2];
		
		System.out.println("\nVetor vet: " + vet);
		
		vet[0] = 4;
		vet[1] = 6;
		
		System.out.println("\nvet[0] = " + vet[0] + "\nvet[1] = " + vet[1]);
		
		int[] vet2;
		vet2 = vet;
		
		System.out.println("Vetor vet2: " + vet2);
		
		vet2[0] = 1;
		vet2[1] = 2;
		
		System.out.println("\nvet2[0] = " + vet2[0] + "\nvet2[1] = " + vet2[1]);
		
		vet[0] =  9;
		
		System.out.println("\nvet2[0] = " + vet2[0] + "\nvet2[1] = " + vet2[1]);
	}
}

Para copiar adequadamente os valores de um array para outro, tens as seguintes opções:

1 - Usar um laço (estrutura de repetição);
2 - Fazer uma clonagem (usar clone);
3 - Fazer uma cópia: (usar System.arraycopy ou Arrays.copyOf);

Para mais detalhes, visite esse post: Devmedia - Copiando o Conteúdo de um Array em Java.