网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > JAVA > 正文

Static和Final修饰类属性变量及初始化

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/07/09

鉴于大家对JAVA十分关注,我们编辑小组在此为大家搜集整理了“Static和Final修饰类属性变量及初始化”一文,供大家参考学习

  1.static修饰一个属性字段,那么这个属性字段将成为类本身的资源,public修饰为共有的,可以在类的外部通过test.a来访问此属性;在类内部任何地方可以使用.如果被修饰为private私有,那么只能在类内部使用.

  

public class Test{       public static int a;       private Test(){       a=0;      }      }

  

  如果属性被修饰为static静态类资源,那么这个字段永远只有一个,也就是说不管你new test()多少个类的对象,操作的永远都只是属于类的那一块内存资源.例如:

  

Test t1=new Test();     t1.a=10;     Test t2=new Test();     System.out.println(t1.a);     System.out.println(t2.a);           System.out.println(Test.a);

  

  结果是3个0

  

  2.final 用于声明属性,方法和类,分别表示属性一旦被分配内存空间就必须初始化并且以后不可变,方法一旦定义必须有实现代码并且子类里不可被覆盖,类一旦定义不能被定义为抽象类或是接口,因为不可被继承。

  

  而你的代码里对final修饰的属性进行了修改,所以错误.

  

  3. 被final修饰而没有被static修饰的类的属性变量只能在两种情况下初始化:

  

  a.在它被定义的时候,例:

  

  

public class Test{         public final int a=0;         private Test(){         }            }

  

  b.在构造函数里初始化,例:

  

  

public class Test{         public final int a;         private Test(){             a=0;         }            }

  

  4.同时被final和static修饰的类的属性变量只能在两种情况下初始化:

  

  a.在它被定义的时候,例:

  

  

public class Test{         public final int a=0;         private Test(){         }            }

  

  b.在类的静态块里初始化,例:

  

  

public class Test{         public final int a;         static{             a=0;         }            }

  

  5.分析第三第四原因:

  

  第三条:当这个属性被修饰为final,而非static的时候,它属于类的实例对象的资源,当类被加载进内存的时候这个属性并没有给其分配内存空间,而只是定义了一个变量a,只有当类被实例化的时候这个属性才被分配内存空间,而实例化的时候同时执行了构造函数,所以属性被初始化了,也就符合了当它被分配内存空间的时候就需要初始化,以后不再改变的条件.

  

  第四条:当类的属性被同时被修饰为static和final的时候,他属于类的资源,那么就是类在被加载进内存的时候(也就是应用程序启动的时候)就要已经为此属性分配了内存,所以此时属性已经存在,它又被final修饰,所以必须在属性定义了以后就给其初始化值.而构造函数是在当类被实例化的时候才会执行,所以用构造函数,这时候这个属性没有被初始化.程序就会报错.而static块是类被加载的时候执行,且只执行这一次,所以在static块中可以被初始化.

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号