- 1、本文档共86页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3类和对象
* 被static修饰的属性称为静态属性,这类属性一个最本质的特点是:它们是类的属性,而不属于任何一个类的具体对象。换句话说,对于该类的任何一个具体对象而言,静态属性是一个公共的存储单元,任何一个类的对象访问它时,取到的都是相同的数值,同样任何一个类的对象去修改它时,也都是在对同一个内存单元做操作。 一种情形是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象; 银行帐户(银行利率) 记录已创建的本类对象的个数 每个对象的实例变量都分配内存,通过该对象来访问这些实例变量,不同的实例变量是不同的。 类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量,每个实例对象对类变量的改变都会影响到其它的实例对象。类变量可通过类名直接访问,无需先生成一个实例对象,也可以通过实例对象访问类变量。 3.8.2 生命期 1、局部变量生命期 局部变量的生命期与其作用域有关。 其在程序执行流程中,当到达作用域时变量开始使用,生命期开始,超出作用域则不再使用,生命期结束。 内存栈区 2、数据成员生命期与对象生命期 数据成员生命期:数据成员随对象创建而分配内存,随对象销毁而销毁,其生命期与对象生命期一致。 对象生命期:new创建时生命期开始,没有引用指向时生命期结束。 内存堆区:垃圾收集机制 * class Rectangle{ ……//内容略} class A{ Rectangle r; void set(Rectangle re){r = re;} } public class Test{ public static void main(String args[]){ Rectangle r1 = new Rectangle(1,1); A b = new A(); b.set(r1); A c = new A(); c.set(r1); } } width:1 height:1 r1 r b Rectangle对象 r c 类A对象 堆区 栈区 …… * 3.9 静态数据成员与静态方法 实例数据成员,实例方法 类数据成员,类方法(静态数据成员,静态方法) * 3.9.1 静态数据成员 类的静态数据成员概念 数据成员属于类,而不属于任何特定的对象,由类的所有对象共享。 类:Student 属性: 学号,姓名,成绩 学生数 方法:显示学生信息 对象:aaa “001”,“aaa”,89 对象:bbb “002”,“bbb”,78 * 1、类的静态数据成员声明 用static修饰符修饰类的数据成员 2、类的静态数据成员访问 类静态数据成员可通过类名直接访问,也可以通过对象访问,在类的方法中直接访问。 注意:类的静态数据成员值被所有对象共享,任何对象都可以访问类的静态数据成员,但要注意,它们使用的是同一个数据,操作的是同一块内存。无论哪个对象修改了它,对其它对象来说,它也已经变了。 * 【例3-14】类的静态数据成员访问 class A{ static int i ; void change(int i1) { i=i1;} } public class Test{ public static void main(String args[]){ A.i=10; A a=new A(); A b=new A(); System.out.println(A.i+,+a.i+,+b.i); a.change(40); System.out.println(A.i+,+a.i+,+b.i); b.i+=10; System.out.println(A.i+,+a.i+,+b.i); } } * 3、静态数据成员的初始化 默认初始值,声明时直接初始化,静态初始化器。 静态初始化器:Java允许通过静态初始化器初始化静态数据成员。静态初始化器语法: class A{ static int i; static int j=10; static int k; static int m; static{ k=20; m=30; } } static{ ...//静态数据成员初始化语句 } * 4、实例数据成员与静态数据成员的对比 类静态数据成员与实例数据成员二者区别: (1)不管有多少类的实例,类的静态数据成员只有一份拷贝,即所有对象共享相同的静态数据成员;而每个实例对象都有自己的实例数据成员。 (2)类的静态数据成员仅在类初次使用时创建、初始化以后不会再初始化了。而每当创建类的对象时都为实例数据成员分配存储空间,并初始化。 (3)实例数据成员只能通过对象来访,而类静态数据成员既可以通过类名来访问,也
您可能关注的文档
- 26胃炎和溃疡病.ppt
- 2多级放大和负反馈电路.ppt
- 2社会保障精算.ppt
- 21乡村聚落和集市的分布特征.ppt
- 2社会保障精算_00003.ppt
- 2社会保障精算_00004.ppt
- 2第2章_货币资金和应收账款.ppt
- 2_第一章_园林植物主要食叶害虫的危害和防治.ppt
- 2起亚发动机电脑控制系统结构原理和检修 - 首页成本会计精品课程.ppt
- 2商朝青铜器的代表作——司母戊鼎和四羊方尊金文——钟鼎文.ppt
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)