繁体   English   中英

澄清Java中的表达式

[英]Clarification about expressions in Java

基于此文档:它说示例 cadence = 0 是一个表达式,它是 int cadence = 0 中的粗体部分;

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

怎么不是整个语句 int cadence = 0; 一种表达? 整个初始化不会算作一个表达式吗? 当时我就是这么认为的,并在课堂上讲过。

另外,"value1 == value2" 语句 System.out.println("value1 == value2"); 中的表达式如何? 是因为我们正在评估一个新的 String 文字到一个 String 值吗? 这是否意味着单独的文字,例如 5, 4.5, false 是 Java 中的表达式? 在这种情况下,单独的字符串文字被视为表达式。

表达式JLS §15 )是一些可以计算并产生值的代码 值得注意的表达是(不完整的列表)

  • 文字,例如42"Hello World"
  • 变量,例如primeNumberperson.name
  • 数组访问,例如arr[3]
  • 运算符,例如6 * 7a <= 12i++i = 3! done ! done
  • 方法调用,例如add(4, 6)person.getName() (仅限非空方法)
  • 实例创建,例如new Person()

语句是一段可以在{ }块( JLS §14.2 )内执行的代码,例如

  • ifswitch (条件)
  • forwhiledo-while (循环)
  • int iString greeting = "Hello" (局部变量声明)
  • returnbreakcontinue
  • trythrow

一些表达式也可以用作语句,被称为“表达式语句”JLS §14.8 ):

  • 赋值,例如i = 3
  • 前/后递增/递减,例如++ii++i----i
  • 方法调用,例如foo.setNum(13) (包括 void 方法)
  • 实例创建,例如new Person()

怎么不是整个语句int cadence = 0; 一种表达?

它是一个局部变量声明语句,带有初始化程序 只有初始值设定项,即=符号和;之间的部分; , 是一个表达式

这与cadence = 0不同,后者是赋值运算符表达式,需要成为更大语句的一部分。

两者都不同于cadence = 0; (注意分号) ,这是一个赋值表达式语句


"value1 == value2"语句System.out.println("value1 == value2");的表达式如何System.out.println("value1 == value2"); ? 是因为我们正在评估一个新的 String 文字到一个 String 值吗? 这是否意味着单独的文字,例如5 , 4.5 , false是 Java 中的表达式? 在这种情况下,单独的字符串文字被视为表达式。

正确,像54.5false"Hello"这样的文字都是表达式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM