文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发其他语言Static和Final修饰类属性变量及初始化
精品推荐
特别推荐
·给你十条学习Ruby语言的理由
·分页管理机制
·Perl 语言的重要价值体现
·经验技巧:分享两条Delphi开发经验
·Java编程思想:面向对象的逻辑思维方法
·Samba系统简介
热点TOP10
·在VC6中创建wxWidgets项目[附图]
·AIX 5L 学习大纲/简易教程(2)(未经许可,请勿COPY)
·DENX U-Boot及Linux使用手册
·Visual C++ ADO数据库编程入门
·飞机躲避小游戏---是男人就撑100秒的制作
·[仿真实验]操作系统的内存管理
·三维粒子系统在AS2中的实现
·Continuation 和高级流程控制
·[分形]DLA团簇模型的摸拟
·用汇编编写DOS下的内存驻留程序(3)
·简单架设Jabber 局域网即时通讯服务器
·Palm OS应用程序设计指南之十一
·Palm OS应用程序设计指南之五
·samba和openldap结合实战
·AIX 5L 学习大纲/简易教程(1)(未经许可,请勿COPY)
·Internet Explorer 编程简述(十一)完美的Inplace Drag & Drop——“超级拖放”
·利用 wordXP 实现自动排班
·14.4 Function members
·数值计算程序大放送-线性代数方程组
·跟我一起写 Makefile

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

日期:2007年12月14日 作者: 查看:[大字体 中字体 小字体]


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块中可以被初始化.

(出处:清风下载学院






上一篇:Java基础:你是否了解KVM的常量池

下一篇:Linux架设DHCP服务器的方法

Static和Final修饰类属性变量及初始化 相关文章:
·MRTG(多路由器流量图示器)Windows 2000部署指南
·大容量内存的电脑提速技巧
·《盟军敢死队:打击力量》详细流程攻略
·asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
·大量Windows Vista 边栏小工具下载
·巧妙突破大容量邮箱附件大小限制
·用迅雷Thunder批量下载电骡资源的方法集锦
·PHP预定义变量
·批量对加密的asp代码解密的asp程序
·不可不知的系统批量处理技巧
Static和Final修饰类属性变量及初始化 相关软件:
·海量免费毕业论文打包下载
·盟军敢死队4 打击力量
·习惯的力量
·巨量!4900张边框图案 一
·利用留言簿获得大量webshell
·文件批量更名大师V2.88 绿色特别版
·教你使用DRWEAMWEAVER批量修改功能
·分子量计算器 V6.2.1
·九狐流量统计完美版
·麦布流量统计 v1.0

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn