java语言程序设计(一)第三章补充.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java语言程序设计(一)第三章补充

专接本辅导java第三章《面向对象编程基础》补充 0.类变量与实例变量区别(类方法与实例方法的区别见习题解答第12题改错) java类的成员变量有两种:一种是被static关键字修饰的变量,叫类变量或者静态变量; 另一种没有static修饰,为实例变量。 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。 例如,对于下面的程序,无论创建多少个实例对象,只在类被第一次装置时初始化一次staticVar变量和sum变量,并且每创建一个实例对象,就会执行一次构造函数;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。 public class 类变量与实例变量 { public static int staticVar = 0;//类变量初始化,只会在类装载时进行一次!! public int instanceVar = 0;//实例变量初始化 public static int sum=1; public 类变量与实例变量()//构造方法 { staticVar++; instanceVar++; sum=sum+5; System.out.println(staticVar = +staticVar+,instanceVar=+instanceVar); System.out.println(sum = +sum); } public static void main(String []args){ 类变量与实例变量 对象1=new 类变量与实例变量(); 类变量与实例变量 对象2=new 类变量与实例变量(); 类变量与实例变量 对象3=new 类变量与实例变量(); } }运行结果: staticVar = 1,instanceVar=1 sum = 6 staticVar = 2,instanceVar=1 sum = 11 staticVar = 3,instanceVar=1 sum = 16 再如下面的程序,涉及static块: class Value{ static int c=0; static int d; Value(){ c=15;d=65; } Value(int i){ c=i;d=c-1; } static void inc(){ c++; } } public class Count { Value v0=new Value();//调用无参构造函数建立Value类非静态对象v0,类Count和类Value是has-a关系 Value v=new Value(10);//调用有参构造函数建立Value类非静态对象v static Value v1,v2;//声明Value类的static对象v1,v2 //static Value v1=new Value(),v2=new Value();//声明v1、v2并引用新建立的Value类对象 static{//★声明static块,其初始化工作会先于任何其它非static块及非static变量而不管其在源程序书写中出现的先后次序! System.out.println(static块中println语句执行结果:+\n+v0和v是非静态内部类对象,v1和v2是静态内部类对象(请与教材P58例3.18对比),只有声明没有具体指向某对象时:v1.c=+v1.c+ v2.c=+v2.c+ v1.d=+v1.d+ v2.d=+v2.d); v1=new Value(30);//对象v1引用新建立的Value类对象 System.out.println(static块中执行完“v1=new Value(30)之后:”v1.c=+v1.c+ v2.c=+v2.c+ v1.d=+v1.d+ v2.d=+v2.d); v2=new Value(15);//对象v2引用新建立的Value类对象 System.out.println(static块中执行完“v2=new Value(15)之后:”v1.c=+v1.c+ v2.c=+v2.c+ v1.d=+v1.d+ v2.d=+v2.d)

文档评论(0)

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

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

1亿VIP精品文档

相关文档