现在的位置: 首页 > 综合 > 正文

java表达式, 语句, 块(翻译自Java Tutorials)

2012年03月13日 ⁄ 综合 ⁄ 共 1707字 ⁄ 字号 评论关闭

原文出自 http://www.cnblogs.com/ggjucheng/archive/2012/12/16/2820664.html

英文出自 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html

学习了变量和操作符,该开始学表达式,语句,块。操作符用来计算值,是表达式的一部分;表达式是语句的主要部分,块是由语句组成。

表达式

表达式右变量,操作符,方法调用组成,根据语言的语法构造,计算后返回一个单独的值。表达式例子如下加粗的部分:

int cadence = 0;
anArray[0] = 100;
System.out.println("Element 1 at index 0: " + anArray[0]);

int result = 1 + 2; // result is now 3
if (value1 == value2) 
    System.out.println("value1 == value2");

表达式计算返回的值的类型,依赖于表达式里使用的元素。表达式cadence = 0返回一个int,因为赋值运算符返回其左操作数相同的数据类型的值;该这个情况下,cadence 是int。正如你看到的其他表达式,表达式可以返回其他类型的值,例如布尔值或字符串。

java编程语言,允许从多个简单的表达式构造一个复合的表达式,只要表达式的一部分要求的数据类型,复合其他数据类型。这里是一个复合类型的表达式例子:

1 * 2 * 3

这个特定的例子,表达式的计算顺序不重要,因为乘法的结果,和顺序独立;无论使用什么顺序应用乘法运算,结果都是一样的。但是,这不使用所有的表达式,下面的表达式的结果,依靠于除法和乘法的操作哪个才是第一。

x + y / 100    // ambiguous

使用小括号:(和),精确控制哪个表达式先被执行。例如,让先前的表达式没有歧义,可以这么写:

(x + y) / 100  // unambiguous, recommended

如果你不显式指示哪个操作先执行,执行顺序,由表达式的操作的优先级决定。高优先的操作先被执行。例如,除法操作,比加法操作有更高的优先级,所以,下面的两个表达式是一样的:

x + y / 100 

x + (y / 100) // unambiguous, recommended

写复合表达式,使用小括号,显式指明哪个操作先被执行。这个实践让代码更易读,应该保持。

 

语句

语句是大致相当于自然语言中的句子。语句构成一个完整的执行单位。以下类型的表达式可以构造成语句,在表达式用分号(;)结尾就可以了。

  • 赋值表达式
  • 任何使用++或者--
  • 方法调用
  • 对象创建表达式

这种称为表达式语句。下面是一些示例的表达式语句。

// assignment statement
aValue = 8933.234;
// increment statement
aValue++;
// method invocation statement
System.out.println("Hello World!");
// object creation statement
Bicycle myBike = new Bicycle();

除了表达式语句,还有两种类型的语句:声明语句和控制流语句。一个声明语句声明一个变量,你已经见过很多声明表达式的例子:

// declaration statement
double aValue = 8933.234;

最后,控制流语句调节语句执行顺序。后来会学习控制流语句。

一个代码块,有一组0到多个语句组成,位于大括号里面,可以在任何独立语句中可以允许的地方使用。接下来的例子,BlockDemo,解说块的使用:

class BlockDemo {
     public static void main(String[] args) {
          boolean condition = true;
          if (condition) { // begin block 1
               System.out.println("Condition is true.");
          } // end block one
          else { // begin block 2
               System.out.println("Condition is false.");
          } // end block 2
     }
}

抱歉!评论已关闭.