关于 try 和 catch 代码块的小疑问??

chenqipc 2012-05-24 10:47:12
try{
FileInputstram a = new FileInputStream("....");//省略
}catch(){}//省略
try {
a //上面try里的a在这个代码块里怎么不能用啊??
}
...全文
109 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang7535067 2012-05-24
  • 打赏
  • 举报
回复
一楼正解,
sffx123 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
try{
FileInputstram a = new FileInputStream("....");//省略
}catch(){}//省略
try {
a //上面try里的a在这个代码块里怎么不能用啊??
}

改成

FileInputstram a = null;
try{
a = new FileInputStream("....");//省略
}c……
[/Quote]+1,你在{}内部声明的变量只能在内部使用即它作用域就是在{}内部,程序出了该{},变量也就没有用了会被回收,为保证安全,下面再使用该变量编译器会报错。
brightyq 2012-05-24
  • 打赏
  • 举报
回复
就是这样规定的
java中,一个“{}”包含的内容是一个块作用域,里面定义的变量,作用域就到“}”结束。
浮云若水 2012-05-24
  • 打赏
  • 举报
回复
因为你声明的是局部变量 局部变量用过一次之后 虚拟机会自动释放掉
a296792033 2012-05-24
  • 打赏
  • 举报
回复
楼上正解
看那边 2012-05-24
  • 打赏
  • 举报
回复
try{
FileInputstram a = new FileInputStream("....");//省略
}catch(){}//省略
try {
a //上面try里的a在这个代码块里怎么不能用啊??
}

改成

FileInputstram a = null;
try{
a = new FileInputStream("....");//省略
}catch(){}//省略
try {
a //上面try里的a在这个代码块里怎么不能用啊??
}

这里涉及了java中变量名称在作用域中的存活时间

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧