se lo fai globale lo riconosce

il problema viene quando lo assegni
a[0] = 1;
numero = a[0];
numero contiene 1
ma se poi fai a[0] = 2
numero contiene ancora 1

ti consiglio di dichiarare delle costanti in X
public static final int NUMERO = 0;
e da Y accedi alle posizioni di a con queste
y.a[X.NUMERO]