求教final的用法 我需要在一个内部类中使用外部类中定义的一个对象 那么我必须把这个对象定义成final 我想问下 我把这个对象定义成final后 是不是里面所有的成员变量都成了final形式 谢谢。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对象定义成final其实并不确切,其实是某个对象的引用被定义为final,这样定义之后其实通过对象引用仍然可以对对象进行操作,对象的成员变量也不会发生任何的影响,唯一的就是这个定义为final的引用不能再指向其他对象 不会成为final类型,只是声明的引用,指向不可改变 恩,对于基本数据,final将数据定义成常量,而对于对象来说,只是引用被定义成了final,表示引用始终指向那个对象。final是指指向不可变,但是指向的对象我们可以改变它eg:String final str="a"; str="b";System.out.println(str);答案:b补充点儿,final类不能被继承,没有子类,final类中的方法默认是final的final方法不能被子类覆盖,但可以继承 final变量只能一次赋值,不可更改 final不能修饰构造函数static final 对于变量,表示一旦给值就不可修改,并且通过类名可以访问。 对于方法,表示不可覆盖,并且可以通过类名直接访问。 对于被static和final修饰过的实例常量,实例本身不能再改变了,但对于一些容器类型(比如,ArrayList、HashMap)的实例变量,不可 以改变容器变量本身,但可以修改容器中存放的对象 详细见http://wenku.baidu.com/view/f98a589851e79b89680226fb.html final可把基本变量变成常量,一次赋值不可更改。对于final对象只是指针不可更改,就是不能再次New对象,对象内属性不是final类型,可正常使用。 见http://wenku.baidu.com/view/f98a589851e79b89680226fb.html 这是谁说的?外部类中的定义的对象,就是成员变量啊,怎么可能需要 final 才能使用?直接用就好了啊貌似是内部类使用类外部的局部变量的时候,才需要 final 修饰吧这种需求多数出现在:方法体中的匿名内部类调用该方法体的局部变量时 定义常量的时候会用到啊public static final CONSTANT_V = "wa haha"; 错了吧final修饰变量的时候是常量应该是: final String str="a"; 吧 没有必要.final只是当前引用不能变 谢谢提醒确实是这样的我需要引用的对象是在外部类中的构造方法中new的 而我使用的匿名内部类也是在这个构造方法中定义的。。 使用全局变量不需要哦, 只是局部变量才用final ,另外, class Test{ public String name; } final Test t = new Test(); 引用t 是不能改变的,但是对象里的属性name 是可以改变的 final使用在属性,类,方法上,说明属性不可变,类不可被继承,方法不可被重写 数据去了堆的哪个块 用什么办法可以消除“游戏结束”这几个字被覆盖的 jwfd 如何用java实现,1.白色的提示结账面,2.跟如何打印出来 请教java的学习方向问题~谢谢高手指点~ eclipse30m8 代码编辑器为什么不支持中文显示? 关于java群发 如何连续访问两个连接? 一个DatagramSocket程序,为什么会报错? 编写一个方法,类似HashMap里的putAll()方法,大家帮忙看看我写putAll方法哪里有问题?应该怎么写? 瞧瞧这两个方法有啥区别呀 java 对一个类变量加锁\解锁
恩,对于基本数据,final将数据定义成常量,而对于对象来说,只是引用被定义成了final,表示引用始终指向那个对象。final是指指向不可变,但是指向的对象我们可以改变它eg:String final str="a";
str="b";
System.out.println(str);
答案:b
补充点儿,final类不能被继承,没有子类,final类中的方法默认是final的
final方法不能被子类覆盖,但可以继承
final变量只能一次赋值,不可更改
final不能修饰构造函数
static final
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
对于方法,表示不可覆盖,并且可以通过类名直接访问。
对于被static和final修饰过的实例常量,实例本身不能再改变了,但对于一些容器类型(比如,ArrayList、HashMap)的实例变量,不可 以改变容器变量本身,但可以修改容器中存放的对象
详细见http://wenku.baidu.com/view/f98a589851e79b89680226fb.html
外部类中的定义的对象,就是成员变量啊,怎么可能需要 final 才能使用?直接用就好了啊貌似是内部类使用类外部的局部变量的时候,才需要 final 修饰吧
这种需求多数出现在:方法体中的匿名内部类调用该方法体的局部变量时
public static final CONSTANT_V = "wa haha";
错了吧final修饰变量的时候是常量应该是: final String str="a"; 吧
public String name;
}
final Test t = new Test();
引用t 是不能改变的,但是对象里的属性name 是可以改变的