在做某事的时候,我偶然发现了这段代码:
if(true) {
String message = "Assignment possible";
}
if(true)
String message = "Time to leave earth"; // error!
Run Code Online (Sandbox Code Playgroud)
为什么在第二种情况下可以在没有括号的情况下在java中写入"if"条件时出现编译错误?
错误消息似乎没有给出正确的信息:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Syntax error, insert ":: IdentifierOrNew" to complete ReferenceExpression
Syntax error, insert "AssignmentOperator Expression" to complete Assignment
Syntax error, insert ";" to complete Statement
String cannot be resolved to a variable
message cannot be resolved to a variable
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西吗?有人可以解释一下吗?
以下程序没有自己的重要性.它只计算使用类计数器内部的静态字段通过使用for循环创建的对象数,如下所示.
package temp;
final class Counter
{
private static int cnt;
public Counter()
{
cnt++;
}
public static int show()
{
return(cnt);
}
}
final public class Main
{
public static void main(String[] args)
{
for (int i=0;i<50;i++)
{
Counter counter=new Counter();
}
/*for (int i=0;i<50;i++)
Counter counter=new Counter();*/
System.out.print("\nNumber of objects constructed:->"+Counter.show()+"\n\n");
}
}
Run Code Online (Sandbox Code Playgroud)
这里唯一的问题是注释for循环意味着与上面的for循环相同(同样的东西也应用于while循环)根本不起作用导致编译时错误,表明" 不是语句 "意味着在这种特殊情况下,即使for循环只包含一个语句,这对括号也是必需的!为什么?
if ( year % 4 == 0 )
int i = 0;
else
int j = 0;
Run Code Online (Sandbox Code Playgroud)
由于这行代码而在eclipse中出现的语法错误是:
我不知道为什么会这样.
从我观察到的情况来看,我认为在if else构造体中放置一个int声明正在实现它.
如果我在代码中更早地声明i和j并运行程序,则错误消失如下:
int i; int j;
if ( year % 4 == 0 )
i = 0;
else
j = 0;
Run Code Online (Sandbox Code Playgroud)
在这种情况下没有语法错误.为什么?
最近我在短暂的休息后再次开始使用Java进行编程,在为朋友做项目时我注意到一些奇怪的事情:看起来你不能用缩短的ifs创建对象,例如:
if( condition )
Statement statement = con.createStatement();
Run Code Online (Sandbox Code Playgroud)
(为简单起见,我将代码缩短了.)
我收到一个错误说Statement(java.sql包中的一个类)无法解析为变量,但是,如果我用括号包装代码它会工作正常.
我认为这是编译器将其转换为多行语句的一些问题,但我不确定,我想知道这种行为的原因,提前感谢!
为什么以下代码会出现编译错误?
if (true)
int p=10;
Run Code Online (Sandbox Code Playgroud)
如果我使用块,以下类似的代码可以工作:
if (true) {
int p=10;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Eclipse IDE.请让我知道为什么我们不能做第一个的确切原因.