HashMap输出空指针错误的问题

 import java.util.*;

public class Map集合 {
    public static void main(String[] args) {


        HashMap hm = new HashMap(); // 创建一个没有指定类型的Map集合
        Student s1 = new Student("广平", "男");
        Student s2 = new Student("庆阳", "男");
        // Student s3=new Student("心怡","女");
        hm.put("1", s1);
        hm.put("2", s2);
        hm.put("3", (new Student("心怡", "女")));
        hm.put("4", "年龄18");
        hm.put("5", 50);
        // 查找学生编号是001的学生
        // 因为hm.get("001")反回的是Object所以加上强转
        Student s = (Student) hm.get("001");
        System.out.println(s.toString());
        System.out.println("放入不同数据类型的hm集合的元素:" );
        System.out.println(hm);

    }
}

class Student {
    String name;
    String sex;

    public Student(String n, String s) {
        name = n;
        sex = s;
    }

    public String toString() {
        return ("姓名:" + name + " " + "性别:" + sex + " ");
    }

}

上述代码为什么会报空指针错误?但是我把几个put方法改成下述样子就可以:

        hm.put("001", s1);
        hm.put("002", s2);
        hm.put("003", (new Student("心怡", "女")));
        hm.put("004", "年龄18");
        hm.put("005", 50);

Student s = (Student) hm.get("001");这句问题吧,put进去的没有key是"001"的内容,都是“1”“2”...

map里面的key值是不能变的,你怎么put,就必须怎么get

因为你hm.put的key没有设置为001 是设置为1,所以你hm.get("001")找不到 ,然后就空指针了