Diferença entre Arrays.asList (array) e novo ArrayList <Integer> (Arrays.asList (array))

Qual é a diferença entre

1.List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia));  //copy
2.List<Integer> list2 = Arrays.asList(ia);

Ondeia é matriz de inteiros.

Eu vim a saber que algumas operações não são permitidas emlist2. por que é tão? como é armazenado na memória (referências / cópia)?

Quando eu embaralho as listas,list1 não afeta a matriz original, maslist2 faz. Mas aindalist2 é um pouco confuso.

ComoArrayList sendo upcasted para listar difere da criação de novosArrayList

list1 differs from (1)
ArrayList<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia));

questionAnswers(13)

yourAnswerToTheQuestion