final和static之区别
浏览:52日期:2023-03-23
内容: 昨天有弟兄问final和static的区别,我随便写几句.大家继续补充,如果有不对的请纠正.对于可以设置为final和static的类型有几种: 常量数据:这个我觉得达到的效果两者是一样的.但是可以肯定的一点是用final定义的,编译器会认为是编译期常量,从而进行编译优化..而static只是表明'只有一个',我不能确定static定义的变量编译器是否会聪明的进行编译优化? 变量:我觉得final定义的变量和static定义的变量是有区别的. final定义的变量是不能改变指向的句柄的.但是static是可以的,static只是表明这个变量是类变量,而不是instance变量.但是static指向的句柄应该是可以改变的. 比如:final string fs; 初始化 fs='chris'; 那么fs永远都是指向'chris'这个对象的句柄,不可改变. 但是如果是static的变量的话,它指向的句柄应该是可以改变的.但是是一处改变,处处改变. 方法:final定义的方法不可继承,而且有时候会被编译器替换进去(这个有点象#define,但是,注意,是有时候,不是所有时候,这个和java编译器有关) 比如priviate方法其实就是final的,但不是static的. Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
相关文章: