贴上一段代码public class TestConversation {
public static void main(String[] args) {
Object obj=new Integer(5);
if(obj instanceof String){
String strt=(String)objpri;}//
/*if(objpri instanceof String)
String strt=(String)objpri;*///为什么这样,编译就会报错,只是少了一个括号而已
}}如题,知识一个简单的逻辑判断,程序本身没有什么。但是不加大括号,编译器提示有错。
public static void main(String[] args) {
Object obj=new Integer(5);
if(obj instanceof String){
String strt=(String)objpri;}//
/*if(objpri instanceof String)
String strt=(String)objpri;*///为什么这样,编译就会报错,只是少了一个括号而已
}}如题,知识一个简单的逻辑判断,程序本身没有什么。但是不加大括号,编译器提示有错。
你先要进行判断,再转换才是正确的。
if(obj instanceof String)
strt=(String)obj;
----------------------劝你还是加上{}这样以后你自己,或别人看代码时都舒心~
int a = 1;//报错if(1>0)
System.out.println("代码要有一定的规范");//没有问题
1 和intenseof没有任何关系.
2 String strt==(String)objpri; 是在一个局部范围定义了一个变量 Strt. 编译程序要求它有明确的作用域.
事实上,按楼主的意思其作用域就是在if语句判断为真时,执行的这一条语句. 执行完之后,就失去作用了. 所以要加一对括号,指定其明确的作用域.
而你不加, 编译程序无法准确判定其作用域. 所以报错.
后来自己又敲了若干类似的代码,发现一个变量如果先声明了,那么在石油的时候就不必放在大括号内部了(针对本程序来说的)。如果没有事先声明,那么就要在大括号里面同时声明使用它。
第一楼的程序若干变量名有错,改了下:public static void main(String[] args) {
Object obj=new Integer(5);
if(obj instanceof String){
String str=(String)obj;}//
/*if(obj instanceof String)
String str=(String)obj;*///为什么这样,编译就会报错,只是少了一个括号而已}}
public class TestConv {
public static void main(String[] args) {
Object obj=new Integer(5);
if(obj instanceof String) {
String strt=(String)obj;
}
}}LS说的不错学习了!!
当语句块中只有一条声明语句时,需要大括号指明作用域