网站大量收购独家精品文档,联系QQ:2885784924

04_【面向对象1】教学.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
定义类 匿名对象 当不定义变量来引用对象时,此时对象没有名字,称为匿名对象。如:new CellPhone(); 匿名对象只在堆内存中开辟空间,并不存在在栈内存对它的引用。因为没有被任何变量所引用,匿名对象在使用一次之后即成为垃圾,也就是说只能使用一次。 通常当某一个对象只被使用一次的时候,就可以使用匿名对象。 对象的生命周期 从new开始到该对象不被什么变量引用的时候(如phone = null)之间的时期就是对象的生命周期,一旦一个对象不被任何变量所引用时,该对象就是垃圾,就等着Java的垃圾回收器(GC)来清理。 注意:并不是垃圾一旦产生GC就会清理,这完全取决于JVM的调度,程序员无法控制。 变量隐藏 在同一个作用域内不允许定义同名的多个变量。 若当成员变量和局部变量同名,则局部变量会隐藏成员变量,可使用this避免二义性。 变量生命周期 变量的作用域决定了变量的生命周期,说明作用域不同,生命周期就不一样。变量的生命周期指的是一个变量被创建并分配内存空间开始,到该变量被销毁并清除其所占内存空间的过程。 类变量在内存中只有一个,JVM在加载类的过程中为其分配内存,静态变量位于方法区,被类的所有实例共享。 类变量的生命周期取决于类的生命周期,加载类时静态变量就被创建并分配内存,当卸载类时静态变量被销毁并撤销所占内存。 每当创建类的实例时,JVM就会为实例变量分配一次内存,实例变量被创建也并分配内存,实例变量位于堆内存中。 实例变量的生命周期取决于实例的生命周期,当创建实例时,实例变量被创建并分配内存,当销毁实例的时候,实例变量被销毁会并撤销所占内存。 当JVM调用一个方法时,会为该方法中的局部变量分配内存。当结束调用该方法时,会结束方法中的局部变量的生命周期。 局部变量的初始化和JVM中运行机制 局部变量定义后,必须显示初始化后才能使用,因为系统不会为局部变量执行初始化操作。这就意味着,定义局部变量后,系统并未为这个变量分配内存空间。直到程序为这个变量赋值时,系统才会为局部变量分配内存,并将初始值保存到该内存中。 局部变量不属于任何类或实例,因此它总是保存在其所在方法的栈内存中。 基本数据局部变量:直接把这个变量的值保存到该变量所对应的内存中。 引用数据局部变量:这个变量内存中存的是地址,通过该地址引用到该变量实际引用堆里的的对象。 栈内存中的变量无需系统垃圾回收,其往往随方法或代码块的运行结束而结束。 成都传智播客教育 cd.itcast.cn 内存分析 phone brand=Google price=0.0 CellPhone phone = new CellPhone(); CellPhone 山寨机= phone; 山寨机 CellPhone对象 成都传智播客教育 cd.itcast.cn 引用数据类型数组分析 学生是一个类,学生这个类有一个字段叫名字,有一个方法是交学费。每一个学生都是通过学生这个类new出来的一个对象。我现在创建一个数组,这个数组里面依次放的是没有交学费的学生的对象,我再分别调用数组里的这些学生的交学费方法。 成都传智播客教育 cd.itcast.cn 引用数据类型数组分析 unFees s1 s2 unFees[1] name=Will; unFees[0] name=Lucy; 成都传智播客教育 cd.itcast.cn 构造器 一旦创建对象就会调用与之对应的构造器(又称构造方法),构造器的作用:可用于创建对象和对对象初始化操作。如:CellPhone cp = new CellPhone(); 特点: 方法名与类名相同 不用定义返回值类型 不需要写return语句 注意: 默认构造方法的特点。 多个构造方法是以重载的形式存在的。 构造器 == 构造方法 成都传智播客教育 cd.itcast.cn 构造器 构造器初始化 为对象分配内存; 执行字段的显示初始化; 执行构造器; 由new运算符返回对象的引用; setter方法和构造方法都可以用来初始化字段的值,那么什么时候用构造方法什么时候用setter? 当字段的值是和类的对象紧密相关不可分割的时候,用构造方法,就是说我要有这个实例,就必须有这个字段值,就用构造方法。 需要初始化的字段值不太多的时候可以用构造方法,如果字段值太多,构造方法的参数列表太。。。了。 其他时候都可以用setter方法。 成都传智播客教育 cd.itcast.cn static关键字 特点: 随着类的加载而加载 优先于对象存在 被所有对象所共享 可以直接被类名调用 使用注意: 静态方法只能访问静态成员 但是非静态成员可以访问静态成员; 静态方法中不可以使用this,super关键字 主方法(main)是静态的 publ

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档