当我结束这样一条线时,我觉得会发生坏事。但编译器甚至没有抱怨。有没有人有一个想法,为什么这在java中是合法的。
displayDataMap.put("dateInterval", getDateInterval());;
编辑:Eclipse没有抱怨的原因是因为preference->java->compiler->Errors/Warning
我有空语句:as ignore。
答案 0 :(得分:10)
这是一个空话,有效。正如jwodder所指出的,更确切地说,空语句是两个分号之间缺少语句,可以用两个连续的分号或用空格分隔的分号(包括新行)表示。
像Eclipse这样的IDE会警告你这件事。如果您查看下面的图片,我在第236行插入了一个双分号。我添加了红线以集中注意力,但Eclipse提供了许多视觉提示:
答案 1 :(得分:2)
编译器使用分号来表示“语句结束”。让两个连续结束第一个语句之前的语句,然后创建第二个空语句。
真的,你甚至可以这样做:
displayDataMap.put("dateInterval", getDateInterval());;;;;;;;;;;;;;;
答案 2 :(得分:2)
这是C中的一个实际例子:
#ifndef NDEBUG
#define Dprintf printf
#else
#define Dprintf(X)
#endif
if(some_test)
Dprintf("It's true!");
else
Dprintf("It's false.");
如果定义了NDEBUG
,编译器将看到:
if(some_test)
;
else
;
这在某些情况下很有用。
由于Java深受C / C ++的启发,因此它保留了一些东西,即使它没用,也没有预处理器。
可以,如果需要,可以在代码上运行C预处理器cpp
来执行此类行为。
有些语言可能会说这是一个错误,它取决于他们选择。
答案 3 :(得分:2)
;
表示空语句,或者您可以说,它表示Java中任何语句的终止行,即使您在Java中放置了多个有效语句也是如此。编译器不会给你任何错误,因为这是有效的。即使以下声明也是有效的:
System.out.println("HI");;;;;;;;
答案 4 :(得分:1)
意味着陈述结束。
for ;; ,第二个;
意味着该陈述不包含任何内容。
答案 5 :(得分:1)
这是一个空洞的陈述,就像你这样做一样:
int x = 0;
;
没有问题!
答案 6 :(得分:0)
编译器即使只是创建一个扩展名为.java的空文件也不会抱怨。它是一个空的编译单元,它的有效。分号是一个有效的空语句。