ネットを通してJavaのオブジェクトのソートについて勉強中です。
下記のコードは性別、年齢、名前の順に昇順に並び替えているのですが性別におけるソートの理屈がよく分かりません。なぜ性別「m」の要素が先頭に入るリストになるのか。compareToメソッドで1が返ってくる場合は、昇順になるという意味があったりするのでしょうか。

public class SmartEnergy {

    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student("いのうえなおみ", 24, 'f', 158));
        students.add(new Student("たかはしたつや", 23, 'm', 176));
        students.add(new Student("いのうえなおみ", 27, 'm', 164));
        students.add(new Student("えのもとめぐみ", 24, 'f', 162));
        students.add(new Student("えのもとたすく", 24, 'm', 178));
        students.add(new Student("さくらぎたかはる", 26, 'f', 163));

        //性別、年齢、名前の順に昇順に並び替える
        Collections.sort(students, new Comparator<Student>() {
            public int compare(Student student1, Student student2) {
                int temp = 0;
                if (student1.getSex() == 'm' && student2.getSex() == 'f')
                    temp = -1;
                if (student1.getSex() == 'f' && student2.getSex() == 'm')
                    temp = 1;
                if (temp == 0) {
                    temp = student1.getAge() - student2.getAge();
                    if (temp == 0)
                        temp = student1.getName().compareTo(student2.getName());
                }
                return temp;
            }
        });

        for (Student student : students) {
            System.out.println(student.getName() + "," + student.getAge() + ","
                    + student.getSex() + "," + student.getHeight());
        }
    }
}