1.堆内存(heap):存放new出来的东西 。
2.栈(stack):存放局部变量的地方。
3.data segment:静态变量、字符串常量的地方。
4.code segment:存放代码。
5.引用数据类型(数组、类)
1.堆内存(heap):存放new出来的东西 。
2.栈(stack):存放局部变量的地方。
3.data segment:静态变量、字符串常量的地方。
4.code segment:存放代码。
5.引用数据类型(数组、类)
对象的产生分析
如果要进行对象的产生分析,那么首先就必须清楚引用类型。引用类型指的是内存空间的操作。而对于现在的内存主要会使用两块内存空间:
class Person{//定义一个类,类名称要求首字母大写
String name;
int age;
public void info() {
System.out.println("name = "+ name + ",age = " + age);
}
}
public class Class1{
public static void main(String args[]) {
//类名称 对象名称 = new 类名称();
Person kai = null;//声明一个新的对象
kai = new Person();//实例化了一个对象
kai.name = "wangkai";//设置对象中的属性
kai.age = 23;
kai.info();//调用方法
}
}
分布式具体内存分析:
但是千万要记住一点,对象(所有的引用数据类型)必须在其开辟空间之后才可以使用。如果使用了未开辟内存空间的引用类型,则将出现NullPointrException:
class Person{//定义一个类,类名称要求首字母大写
String name;
int age;
public void info() {
System.out.println("name = "+ name + ",age = " + age);
}
}
public class Class3{
public static void main(String args[]) {
//类名称 对象名称 = new 类名称();
Person kai = null;//声明一个新的对象
kai.info();//调用方法
}
}
这个时候我们只是声明了对象,而并没有为其开辟堆内存空间,而本程序在编译的时候不会产生任何的语法错误,但是在执行的时候会出现如下的错误提示:
Exception in thread "main" java.lang.NullPointerException
at 类与对象.Class3.main(Class3.java:15)
“NullPointerException”是在你们整个的开发人生之中会一直陪伴到你最后的一个异常。只有引用数据类型(数组,类,接口)才会产生此类异常,以后出现了就根据错误的位置观察该对象是否实例化。
内存空间:
1、堆内存空间:真正的数据,保存的是对象的属性信息
2、栈内存空间:保存堆内存的地址,对象名称
一个栈只能保存一个堆内存地址
对象必须为其开辟内存空间才能执行,否则会报空指针异常
对象的产生分析
引用类型指的是内存空间的操作。
现在的内存分为两块内存空间:
堆内存空间:保存真正的数据,堆内存保存的是对象的属性信息;
栈内存空间:保存的堆内存的地址,堆内存操作权,保存的是对象名称;
一个栈内存中只能够保存一个堆内存地址。
对象的产生实际上会有两种格式:
声明实例格式
分布式格式
对象(所有的引用数据类型)必须在其开辟空间之后才可以使用。如果使用了未开辟内存空间的引用数据类型,则将出现NullPointerException
只声明对象,并没有为其开辟堆内存空间,而 程序在编译的时候不会产生任何的语法错误,但是在检测的时候会出现如下错误提示:Exception in thread "main"java. lang.NullPointerException at TestDemo.main(TestDemo.java:12)-数字代表代码行数
只有引用数据类型(数组、类、接口)才会产生此类异常,以后出现了可以根据错误的位置观察该对象是否实例化。
堆内存空间:保存真正的数据,堆内存保存的是对象的属性信息;
栈内存空间:保存的堆内存的地址,堆内存的操作权,简单理解可以为对象名称;
Person per = new Person();
new就是开辟新的堆内存;
per的地址存在栈内存中;
对象的属性的默认值保存在堆内存里;
name=null;
age=0;
分步建立对象;
Person per=null;
per在栈内存中;
per=new Person();
new开辟新的堆内存,并保存对象属性的默认值。
错误NullPointerException,都是引用数据错误,表示对象未实例化。
类的内存:
关键字new一定是开辟内存空间。
堆内存
栈内存
堆内存空间:保存真正的数据,保存对象的属性信息;
栈内存空间:保存堆内存的地址,堆内存的操作权,可以简化理解为保存的是对象名称
new表示开辟新的堆内存空间,内存地址被栈保存着
一个栈只能存一个地址
只有引用数据类型会产生NullPointerExpection错误,以后出现了就根据错误的位置观察是否实例化
dgasdfasdf