【名师课堂】Java面向对象开发

【名师课堂】Java面向对象开发

Java核心第二部
106课时 |
23947人已学 |
(24 评论)

加入学习
加入学习

  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”是在你们整个的开发人生之中会一直陪伴到你最后的一个异常。只有引用数据类型(数组,类,接口)才会产生此类异常,以后出现了就根据错误的位置观察该对象是否实例化。

 

 

 

[展开全文]
里程碑 · 2017-12-24 · 类与对象(对象内存分析) 0

内存空间:

1、堆内存空间:真正的数据,保存的是对象的属性信息

2、栈内存空间:保存堆内存的地址,对象名称

一个栈只能保存一个堆内存地址

对象必须为其开辟内存空间才能执行,否则会报空指针异常

[展开全文]
errymouse · 2017-10-27 · 类与对象(对象内存分析) 0

对象的产生分析

引用类型指的是内存空间的操作。

 现在的内存分为两块内存空间:

堆内存空间:保存真正的数据,堆内存保存的是对象的属性信息;

栈内存空间:保存的堆内存的地址,堆内存操作权,保存的是对象名称;

一个栈内存中只能够保存一个堆内存地址。

对象的产生实际上会有两种格式:

声明实例格式

分布式格式

对象(所有的引用数据类型)必须在其开辟空间之后才可以使用。如果使用了未开辟内存空间的引用数据类型,则将出现NullPointerException

只声明对象,并没有为其开辟堆内存空间,而 程序在编译的时候不会产生任何的语法错误,但是在检测的时候会出现如下错误提示:Exception in thread "main"java. lang.NullPointerException at TestDemo.main(TestDemo.java:12)-数字代表代码行数

只有引用数据类型(数组、类、接口)才会产生此类异常,以后出现了可以根据错误的位置观察该对象是否实例化。

 

 

[展开全文]
致知格物 · 2017-10-24 · 类与对象(对象内存分析) 0

堆内存空间:保存真正的数据,堆内存保存的是对象的属性信息;

栈内存空间:保存的堆内存的地址,堆内存的操作权,简单理解可以为对象名称;

Person per = new Person();

new就是开辟新的堆内存;

per的地址存在栈内存中;

对象的属性的默认值保存在堆内存里;

name=null;

age=0;

分步建立对象;

Person per=null;

per在栈内存中;

per=new Person();

new开辟新的堆内存,并保存对象属性的默认值。

错误NullPointerException,都是引用数据错误,表示对象未实例化。

[展开全文]
终结命运 · 2017-06-29 · 类与对象(对象内存分析) 0

类的内存:

关键字new一定是开辟内存空间。

堆内存

栈内存

[展开全文]
小虫泊远 · 2017-06-23 · 类与对象(对象内存分析) 0

堆内存空间:保存真正的数据,保存对象的属性信息;

栈内存空间:保存堆内存的地址,堆内存的操作权,可以简化理解为保存的是对象名称

new表示开辟新的堆内存空间,内存地址被栈保存着

一个栈只能存一个地址

只有引用数据类型会产生NullPointerExpection错误,以后出现了就根据错误的位置观察是否实例化

[展开全文]
wangyunchuan · 2017-06-21 · 类与对象(对象内存分析) 0

dgasdfasdf

[展开全文]
keepmoving68 · 2017-06-14 · 类与对象(对象内存分析) 0

授课教师

阿里云开发者社区全面升级
一站式体验,助力云上开发!
进入新社区

相关课程

查看更多 >

本课程相关云产品