当前位置: 首页 > 知识库问答 >
问题:

分号实际上是做什么的?

苏鸿卓
2023-03-14

我在看一个典型的for循环:

class ForDemo {
    public static void main(String[] args){
         for(int i=1; i<11; i++){
              System.out.println("Count is: " + i);
         }
    }
}

我对int I=1后的分号很满意:它是一个声明新变量的语句。如果i也是一个语句,为什么后面没有分号?

另一个例子。我打开Jshell并放置以下内容:

jshell> int a=1;
a ==> 1
jshell> a++
$2 ==> 1
jshell> a
a ==> 2
jshell> int b=1;
b ==> 1
jshell> b++;
$5 ==> 1
jshell> b
b ==> 2

换句话说,命令可以工作,与是否有分号无关。我希望没有它就无法工作。

最后一个示例(改编自关于==之间的差异的演示):

jshell> boolean x = false;
x ==> false
jshell> if (x = true) System.out.println("Sorry! This is wrong ...");
Sorry! This is wrong ...
jshell> boolean x = false;
x ==> false
jshell> if (x = true;) System.out.println("Sorry! This is wrong ...");
|  Error:
|  ')' expected
|  if (x = true;) System.out.println("Sorry! This is wrong ...");
|              ^

我明白了=和==之间的区别。我的问题是为什么它在前半部分有效(如果(x=true)没有 ),且不带代码 if(x=true;) )。

很抱歉有几个例子,但我认为问题相对简单:如果有表达式(不带)用作命令语句(带)的情况,分号的功能是什么?


共有2个答案

汲时铭
2023-03-14
匿名用户

分号是堆栈调用的分隔符。if()的内部需要布尔调用,而不是堆栈调用。只有在<代码>{}中才需要语句。

for()内部需要三个堆栈调用:一个定义循环变量,一个定义中断子句,一个定义每个循环后发生的事情。

示例:(;;) 是有效的java构造。但您永远不应该使用它,因为它唯一要做的就是永远不循环:您不应该定义变量、中断条件或在每次调用后执行的内容。在循环过程中,你也什么都不做。

吴西岭
2023-03-14

分号不起任何作用,因为for循环(除其他外)定义为

基本for语句:for(ForInitopt;Expressionopt;ForUpdateopt)语句

根据https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html

根据定义,三个部分之间有两个分号。

 类似资料:
  • 我正试图把我的头缠在Apache Mesos上,需要澄清几个项目。 我对Mesos的理解是,它是一个安装在集群中的每个物理/VM服务器(“节点”)上的可执行文件,然后提供一个Java API(不知何故),将每个单独的节点视为计算资源(CPU/RAM/等)的集体池。因此,对于使用Java API编码的程序,他们只看到一组资源,而不必担心如何/在哪里部署代码。 因此,首先,我在这里的理解可能是根本错误

  • 我已经回答了一个关于Python中的绝对导入的问题,我认为通过阅读Python2.5更改日志和附带的PEP我理解了这个问题。但是,在安装Python2.5并尝试创建一个从__future__import absolute_import中正确使用

  • 我只是第一次涉足iOS开发,我必须做的第一件事就是实现一个自定义容器视图控制器——让我们称之为SideBarViewController——它交换了几种可能的视图控制器中的哪一种它显示的子视图控制器,几乎与标准的Tab Bar Controller一模一样。(它几乎是一个标签栏控制器,但有一个可隐藏的侧菜单,而不是标签栏。) 根据Apple文档中的说明,每当我向容器中添加子ViewControll

  • 问题内容: 我在线上有一个功能来帮助我完成当前的项目,并且在某些行上有分号。我想知道为什么?会破坏功能吗? 我上线的功能几乎没有修改: 以上是在说以下吗? 问题答案: 分号在您显示的代码中不执行任何操作。 我怀疑这是一个使用另一种语言(C,Java等)进行编程的人,在语句的末尾需要使用分号,这只是一种习惯(有时也对我而言)。 如果要将多个Python语句放在同一行上,可以使用分号将它们分开,请参见

  • 问题内容: 什么是真正做? 它的定义是 刷新实体时,此字段中保存的所有实体也会刷新 但这实际上意味着什么?有人可以给我一个简单的例子吗? 问题答案: 单独的CascadeType描述可能会有些混乱,但是有一种简单的方法可以从一般情况中找出来。 对于任何值,这意味着如果使用接口在实例上调用了操作,并且该实例具有对其他实体实例的引用,并且已经定义了关联,则该操作也将应用于该关联实体。 因此定义为: 从

  • 问题内容: 在构建RPM软件包的过程中,我必须指定BuildRoot,以后将在%install中使用它来侵害$ RPM_BUILD_ROOT。我一直认为$ RPM_BUILD_ROOT是RPM执行打包的假安装。然后,在使用RPM软件包进行安装时,它将安装到实际位置。例如: 我认为$ RPM_BUILD_ROOT仅用于打包过程,并且在某些方面,当用户执行“ rpm -ivh package.rpm”