class Mydate{
}
public class FinalTest {
final int i;
final Mydate md;
FinalTest(){
i=4;
md=new Mydate();
}
public static void main(String args[]){
FinalTest ft=new FinalTest();
// ft.md=new Mydate(); --------这里我的引用并没有改变啊为什么出错?
我引用不还是Mydate的对象吗?引用改变到底是什么意思?
我在finaltest类中将md改为private mydate md;编译就能通过。private
不是默认的设置为final吗?
或者我将ft.md改为mydate.md编译也能通过。 = =
理解不到位请各位大神指点迷津!!谢过!!
}
}
final关键字的一些问题。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
- 杨jun坚 2017-06-20 07:22关注
首先,只有private方法都隐式指定为final,而变量没有这个说法,别混淆了。
final修饰基本类型时,final使数值不改变。
final修饰对象引用时,final使引用恒定不变,一旦被初始化指向一个对象,就无法再把引用指向另一个对象,就像你已经在构造函数中为引用指定一个对象了,所以再次修改时报错。
但是对象的属性可以修改,看代码class Mydate{ private int i=1; public int getI() { return i; } public void setI(int i) { this.i = i; } } public class FinalTest { final int i; final Mydate md; FinalTest(){ i=4; md=new Mydate();//引用已经被初始化指向一个对象 } public static void main(String args[]){ FinalTest ft=new FinalTest(); System.out.println(ft.md.getI());//i=1 ft.md.setI(2); System.out.println(ft.md.getI());//i=2 //ft.md=new Mydate();//无法修改引用指向另一个对象。 } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 phython路径名过长报错 不知道什么问题
- ¥15 深度学习中模型转换该怎么实现
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?
- ¥15 matlab(相关搜索:紧聚焦)
- ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
- ¥15 Arduino无法同时连接多个hx711模块,如何解决?