Un array bidimensionale di oggetti ha un array principale che contiene riferimenti ad altri array.
Ogni sotto array è appunto un array come quel es. {"bbb",Boolean.FALSE }
Il punto è che così è troppo generico e non ben "modellato". Non c'è scritto da nessuna parte cosa sono quei valori. Cosa rappresenta quel boolean? Solo dall'array non lo sai. Inoltre l'array è troppo "arbitrario". Se ti sbagli e metti es.
{Boolean.FALSE, "bbb" }
compila tutto ma poi non è quello che ti serve.
Inoltre l'array è di Object, se estrai qualcosa es. personed[1][0] (che nell'esempio è "bbb") questo lo "vedi" come Object, non come String.
Non puoi fare banalmente es.
System.out.println(personed[1][0].toUpperCase());
Perché l'oggetto referenziato da personed[1][0] è sì realmente un String ma il compilatore lo "vede" come Object e Object non ha toUpperCase(), quindi così non compila. Dovresti fare un cast ... e farlo ogni volta!
Non è quindi così che si modellano le cose. Sfrutta la programmazione ad oggetti, usa le classi.