Compilation error String cannot

2018-07-24  本文已影响0人  泡泡爱上巧克力_7122

public class StrTest {

 public static void main(String[] args) {

     int i = 10; Object obj =i; 

     if(obj instanceof String) String s=(String) obj; 

 }}

出现String cannot be resolved to a variable错误,但是如果改成这样

public class StrTest2 { 

 public static void main(String[] args) {

     int i = 10; Object obj =i; 

     String s=null;

     if(obj instanceof String) s=(String) obj; 

 }}

没有错误。

出现这个编译错误的原因在于StrTest 1中if语句中的变量s作用域仅在{}内,编译器阻止你这么做,认为你出了作用域外我们都不能使用这个变量,并以此认为这是不必要的代码。而StrTest2中作用域在main中。但是在Str1中我们这么写

 if(obj instanceof String) {String s=(String) obj;} 由于有{}的作用,编译器认为你申明的变量的作用域范围,因此没有报错 

上一篇下一篇

猜你喜欢

热点阅读