Java从入门到精通读书笔记(类).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java从入门到精通读书笔记(类)

9.2类(1) 类与定义对象 既然已经清楚了类与对象的关系,那么下面就可以定义一个类并产生对象。 实际上之前的所有程序都是存在类的定义的,因为类要使用class来进行定义。 类的组成:属性、方法。 类的定义格式: Class 类名{ //声明成员变量(属性) 数据类型 属性; .......... //定义方法内容 Public 返回值的数据类型方法名称(参数1,参数2...){ 升序语句; [return 表达式] } } 属性与之前的变量是一样的,数据类型上就是使用java的两种数据类型:基本数据类型、引用数据类型。 但是,此时在方法的定义上与之前直接使用祝方法调用的时候声明不一致的是,不在出现static关键字。 范例:按照此格式定义一个Person类 此时就已经定义了一个类,类中有两个属性:name、age,一个说话的方法:tell() 类已经定义出来了,但是只有类是不恩那个直接使用的,还需要产生对象。 范例:产生一个对象 对象产生只有,就可以调用类中的一系列操作了。 操作分为两种情况: 访问属性:对象名称.属性名 = 值 访问方法:对象名称.方法() 范例:为Person对象中的name和age属性赋值,并调用tell()方法 编译运行: 对象的产生: 对象的产生步骤实际上是分为两步完成的: 声明对象:类名 对象名称 = null; 实例化对象:对象名称 = new 类名称(); 如果对象在使用中只是声明的话,则无法直接使用,必须实例化之后才可以正确的使用。 编译运行后: 此时出现了错误,这个错误造成的根本原因,是由于对象未被实例化,所以出现的空间指向异常。此异常是在大家的开发生涯中始终陪伴大家的。 实际上对于对象的产生,也是与数组一样,需要划分堆·栈空间的。 ·对象实际上是保存在栈内存中的:Person oer = null; ·实例化之后对象会开辟对应的堆内存空间: per = new Person(); 在堆内存中实际上存放的是对象的各种属性,因为对象中只能依靠属性的不同来区分。 问题: 已经知道类中的属性全部保存在堆内存中,那么全部的方法呢? ·全部的方法保存在全局代码区之中。 既然可以产生一个对象,那么就可以产生多个,多个对象之间会互相影响吗? 编译运行: 因为声明了两个对象,所以在栈内存中开辟两个空间,保存两个对象,之后两个对象分别实例化。只要一出现关键字new就表示要开辟新的内存空间。 那么这两个对象之间不会互相影响到。 在对象的操作中实际上是存在引用传递的。所谓的引用传递,就是将一个堆内存空间的使用权交给了其他的对象,就相当于为一个堆内存空间起了一个别名。 引用传递: 编译运行后: 内存分析图: 了解本程序之后,再看一下的程序: 内存分析图: 从本程序中应该得到总结:一个栈内存只能引用一个堆内存空间。但是一个堆内存中可以被多个栈内存同时指向。 在java中不用的内存空间就成为垃圾空间,垃圾空间要等待垃圾收集机制进行空间的释放,垃圾收集机制成为GC。 类 1

文档评论(0)

phltaotao + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档