A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈小红 中级黑马   /  2012-11-1 22:56  /  2194 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

变量和函数加final之后作用范围和生命周期分别会有什么变化?

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1 神马都是浮云

查看全部评分

8 个回复

倒序浏览
加final后,只能给函数、变量赋值一次。变量就会被定义能常量
回复 使用道具 举报
final=最终的意思
final并不是对变量的作用范围进行改变,所以final对变量的作用范围没有影响 主要是看变量定义在那个位置上
被final修饰的成员变量.局部变量 生命周期和未用final修饰的变量一样
不知道说的对不对,我也是新手

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
final:最终;作为一个修饰符
* 1.可以修饰类,函数,变量
* 2.被final修饰的类不可以被继承,为了被 继承,被子类复写功能.
* 3.被final修饰的方法不能被复写
* 4.被final修饰的变量是一个常量只能赋值一次,即可以修饰成员变量,也可以修饰局部变量
* 当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给值起个名字,方便于阅读
* 而这个值不需要改变,所以加上final修饰.作为学号,常量的书写规范所有字母都大写,
* 如果由多个单词组成.单词间通过_连接.
* 5.内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量
*/

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1

查看全部评分

回复 使用道具 举报
面向对象的语言只能说方法吧没有函数之说
回复 使用道具 举报
当一个类被final所修饰时,表示该类是一个终态类,即不能被继承,就是说这个类不能再子类了;当一个方法被final所修饰时,表示该方法是一个终态方法,即不能被重写(Override)。当一个属性被final所修饰时,表示该属性不能被改写,意思就是说当final修饰的属性赋上初始值后,不能再赋值给final修饰的属性。还有,当final修饰一个基本数据类型时,表示该基本数据类型的值不能发生变化(比如说不能从10变为20);如果final修饰一个引用类型时,表示,该引用类型不能在指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。更多详细的final介绍详见我的博客:http://blog.csdn.net/lsh609912726/article/details/8138871。大家共同努力去进黑马啊

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1

查看全部评分

回复 使用道具 举报
加入final修饰符后,函数和变量在内的的位置也会随之发生改变。变量没被加final的时候是在栈中,方法则是在方法区中。但是加入了final后,变量和方法在内存的位置都会发生改变。而生命周期也会和类一样

回复 使用道具 举报
public class Main {   
      
    public void finalTestFunc() {   
        final FinalTest t = new FinalTest();   
        System.out.println("T:" + t.toString());   
    }   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) {   
        Main m = new Main();   
        m.finalTestFunc();   
        m.finalTestFunc();   
    }   
  
}  
FinalTest是个空类,啥都没有,toString会转换成其地址打印出来,上面一段程序的打印:

T:FinalTest@c17164   
T:FinalTest@1fb8ee3  
可以看到在finalTestFunc()函数中虽然t用final修饰了,但是两次调用,每次都创建了新的对象,final只是标记了t在本次调用中不能再次指向别的对象,并不代表这个对象始终存在,整个程序生命周期中只初始化一次。

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1

查看全部评分

回复 使用道具 举报
final : 最终。作为一个修饰符,
1,可以修饰类,函数,变量。
2,被final修饰的类不可以被继承。为了避免被继承,被子类复写功能。
3,被final修饰的方法不可以被复写。
4,被final修饰的变量是一个常量只能赋值一次,既可以修饰成员变量,有可以修饰局部变量。
        当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字。方便于阅读。
        而这个值不需要改变,所以加上final修饰。作为常量:常量的书写规范所有字母都大写,如果由多个单词组成。
        单词间通过_连接。
5,内部类定义在类中的局部位置上是,只能访问该局部被final修饰的局部变量。

评分

参与人数 1技术分 +1 收起 理由
尤圣回 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马