JVM 字符串常量池存储的是字符串对象的引用。在Java中,字符串常量池是一种存储字符串对象的特殊区域,用于存储原始程序中出现的字符串常量。如果多个字符串常量的值相同,那么它们在常量池中会共享一个对象,即通过存储相同字符串的引用来节省内存空间。这种共享的机制可以通过使用字符串的 intern() 方法来实现。

1.定义的时候并没有分配哦 你所定义的是一个实例变量,而不是静态变量,
2.你的类中没有写构造方法,所以会有一个默认的构造方法完成对象的实例创建,在对象创建后,通过对象实例即可访问到m那个对象了
Java中的引用相当于C语言中的指针,没有设置到对象的实例就是说这个类没有实例化,也就相当于C语言中的野指针,没有实例化的引用不会建立内存空间,在运行时会出错,例如,有一个类叫STUDENT,然后写这样的代码:STUDENT stu1;STUDENT stu1 = new STUDENT()
;//这句会出错,因为stu1没有被实例化,是空的System.out.println(stu2.name)
;//这句没问题,因为stu2被实例化了,已经有了内存空间所以只要用new关键字将你需要的那个类实例化一下就不会报错了。
我来提供一个比较靠谱的详细的解释,假设,A类是B类的父类,当我们用子类创建一个对象,并把这个对象的引用放到父类的对象中时,比如A a;A=new B();或A a;B b=new B();a=b;称这个父类对象 a,是子类对象b的上转型对象。好比说“老虎是哺乳动物”。对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原对象的一些属性和功能。上转型对象具有如下特点:
1 上转型对象不能操作子类新增的成员变量(失掉了这部分属性),不能使用子类新增的方法(失掉了一些功能)。
2 上转型对象可以操作子类继承或重写的成员变量,也可以使用子类继承的或重写的方法。
3 如果子类重写了父类的某个方法后,当对象的上转型对象调用这个方法时一定是调用了这个重写的方法。