如下代码编译时会提示错误:public class Test1
{
public static void main(String[] args)
{
int x = Integer.parseInt(args[0]);
x == 5 ? "yes" : "no";
}
} 错误是:
(x == 5) ? "yes" : "no";
^ not a statement 如果将以上代码改成:public class Test1
{
public static void main(String[] args)
{
int x = Integer.parseInt(args[0]);
String s = x == 5 ? "yes" : "no";
}
} 则解除了问题那么以此类推,有返回值的方法,应该也不能够独立成句
可事实上并非这样,以下代码成功编译并运行,为什么会这样呢???public class Test2
{
public static double method()
{
return 10;
}
public static void main(String[] args)
{
method();
}
}
{
public static void main(String[] args)
{
int x = Integer.parseInt(args[0]);
x == 5 ? "yes" : "no";
}
} 错误是:
(x == 5) ? "yes" : "no";
^ not a statement 如果将以上代码改成:public class Test1
{
public static void main(String[] args)
{
int x = Integer.parseInt(args[0]);
String s = x == 5 ? "yes" : "no";
}
} 则解除了问题那么以此类推,有返回值的方法,应该也不能够独立成句
可事实上并非这样,以下代码成功编译并运行,为什么会这样呢???public class Test2
{
public static double method()
{
return 10;
}
public static void main(String[] args)
{
method();
}
}
x == 5 ? "yes" : "no";相当于:
if(x == 5){
"yes";
}else{
"no";
}
"yes";和"no";算句子吗?
method();这才是个正常的句子,返回值可以再内存中废弃
什么叫赋值语句?没听说赋值表达式吧。<assignmentStatemet> ::= <left> <assignOp> <right>
<left> ::= <Identifier>
<assignOp> ::= += | -= | *= | /= | %= | =
<right> ::= <Expression>表达式往往嵌入在语句中
如if语句,if ( [表达式] ) [语句]
赋值语句, [变量名] [赋值操作符] [表达式]三元操作符也是表达式之一,
语句里没有三元语句的定义
{
public static void main(String[] args)
{
int x = Integer.parseInt(args[0]);
x == 5 ? System.out.println("true") : System.out.println("true");
}
} 这算不算句子?如果算的话,那么很可惜的告诉你:“不是语句”
我也不是很明白Java中的三目运算符,前些天还碰过到呢。
比如说三元运算符和赋值语句int a =1;
int b = (a>0) ? 1 : 0;
你是想写一个表达式语句,你认为:(x == 5) ? "yes" : "no" 是一个表达式,则加上;后就成为一个语句了?
这个在C/C++中正确的,在JAVA中对表达式有特定的要求.即: 表达式E;
要形成一个表达式语句,则表达式E必须只能是:
1)赋值表达式,
2)自增++表达式,
3)自减--表达式,
4)方法调用表达式,
5)new 表达式.