java中try{}catch{}语句为什么把定义管道语句写在try内就出错,先外定义就正确
答案:3 悬赏:0 手机版
解决时间 2021-02-15 20:14
- 提问者网友:辞取
- 2021-02-15 17:01
java中try{}catch{}语句为什么把定义管道语句写在try内就出错,先外定义就正确
最佳答案
- 五星知识达人网友:春色三分
- 2021-02-15 18:14
一个程序块定义了一个作用域
你在try{}中定义的FileInputStream只存在t当前try块中,所以在第二个try中他未定义,所以报错追问好像还必须对in初始化,为什么String 那些引用不用初始化 这个管道必须初始化呀追答所有都必须初始化
String str = new String();看起来像是没有初始化复制,但是他调用自己的构造方法,已经做了初始化了
你在try{}中定义的FileInputStream只存在t当前try块中,所以在第二个try中他未定义,所以报错追问好像还必须对in初始化,为什么String 那些引用不用初始化 这个管道必须初始化呀追答所有都必须初始化
String str = new String();看起来像是没有初始化复制,但是他调用自己的构造方法,已经做了初始化了
全部回答
- 1楼网友:洒脱疯子
- 2021-02-15 20:08
那就是Java变量作用域的问题了。Java基本上{}算一个作用域,你把in定义在try里面那么这个in只在这个try里面有效。放在外面的话,就相当于全局变量的意思了追问好像还必须对in初始化,为什么String 那些引用不用初始化 这个管道必须初始化呀追答你的程序写的不太好,初始化也是Java io的特性。你最好吧下面的一个try放在第一个的try里面。形成这样的:
try{
try{
}catch(){
}
}catch(){
}
try{
try{
}catch(){
}
}catch(){
}
- 2楼网友:青尢
- 2021-02-15 19:02
作用域问题。in 这个变量是在第一个try catch里定义,它的作用域只在try 包围的块内。在别处就无法识别,因此会提示 in cannot be resolved (in变量无法解析)。追问好像还必须对in初始化,为什么String 那些引用不用初始化 这个管道必须初始化呀
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯