No, your crossover function does not fit the conventional meaning of the term. Crossover should take genes from two parents. What you have now is more like a mutation function.
Uniform crossover is a common crossover implementation of two genomes where the child gets approximately 50% of the genes of each parent. Here I assume the genome length is fixed.
private String crossover(String parent1, String parent2){
String child = "";
for(int i = 0; i < parent1.length(); i++){
if (rand.nextFloat() >= 0.5){
child += parent1[i];
}
else {
child += parent2[i];
}
}
}