String pra vetor de int

Tava fazendo um codigo de verificação de cpf pra treino, e tentei passar uma String pra um vetor de numero e depois fazer as verificações necessarias, porem encontrei esse problema, q nao apresenta o numero certo.

String numero = "12345678911";
        int num[] = new int [11];
        for (int i = 0; i < num.length; i++) {
            num[i] = numero.charAt(i);
            System.out.print(num[i] + " ");
        }
run:
49 50 51 52 53 54 55 56 57 49 49 BUILD SUCCESSFUL

eu resolvi o problema desse jeito:

char[] c = new char [11];
        String numero = "12345678911", s[]=new String [11];
        int num[] = new int [11];
        for (int i = 0; i < num.length; i++) {
            c[i] = numero.charAt(i);
            s[i] = String.valueOf(c[i]);
            num[i] = Integer.parseInt(s[i]);
            System.out.print(num[i] + " ");
        }
1 2 3 4 5 6 7 8 9 1 1  BUILD SUCCESSFUL 

Mas nao entendi exatamente o por que nao posso passar de String pra um vetor de int e consequentemente tive que fazer varias conversoes. Se alguem souber o por que…

Nao sei se essa é a maneira mais facil de fazer isso, mas tambem aceito sugestoes de melhorias.

Se você atribui um char diretamente à um int, aquele int vai conter o código Unicode daquele caractere.

Ao invés de fazer assim:

num[i] = numero.charAt(i);

Faça assim:

num[i] = Character.getNumericValue(numero.charAt(i));