浅谈空指针和栈,堆内存

/**
   * 堆内存(heap):保存每一个对象的属性,使用一个对象时,一定需要一个对应堆内存的指向,而堆内存空间的开辟需要用关键字     *new,每一个对象在刚刚实例化后,里面的属性都是其对应数据类型的默认值,一块堆内存可以被多个栈内存指向


     * 栈内存(stack):保存的是一块堆内存的空间地址值,一个栈内存只能保存一个堆内存的空间地址值。
     */

String str = "";//此时并未new对象,但会直接入池保存,并且同样会开辟一块内存空间
str.equals("");//true
String str2 = new String();//使用一个对象时一定要确保对应的堆内存的指向,而堆内存需要关键字new,每个对象被实例化后都有其默认的数据默认值,一块堆内存可以被多个栈内存所指向,也就数关系的引用
str2.equals("")//true  String默认是null
new String().equals("")//true 匿名对象,在堆内存开辟一个新的内存空间,因为它没有把空间地址值给任何变量,所以只会被调用一次,当做实参传递,而后等待被GC回收

猜你喜欢

转载自blog.csdn.net/qq_40826106/article/details/82684627