注册
 找回密码
 注册
江西广告网
查看: 303|回复: 0
打印 上一主题 下一主题

Java的表达式

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2008-12-27 17:42:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  我们曾说 Java(TM) 编程语言的语法功能强大。As an example of this expressiveness,表达式求值顺序,下面我们将讲述怎样设计一个支持 "串联方法求值(chained method evaluation)" 的类。   Java 虚拟机对表达式的求值按照从左到右的顺序,并遵循标准的运算优先级法则。当然,与其他语言一样,求值顺序还可以用()来控制:   int x = (4 32) / (2 1); // x == 12   前面讲过,new 操作符按从左到右的求值次序,这使得新创建一个对象并用一个 "." 后跟某个方法来完成某个操作十分方便:    new Dog().bark();   此表达式求值过程如下:   new Dog() 生成一个 Dog的无名实例,暂称其为 "dogWithNoName"。该实例捆绑 bark() 方法并执行它。   "dogWithNoName.bark()"   此处的一个要点是 Java 编程语言按从左到右的原则继续这种 "求值加捆绑" 策略直至完成了整个表达式的操作。因此,只要 "." 左边的值是一个对象,右边是一个方法,Java 虚拟机就会将方法捆绑到对象上,并执行相应的操作。   请看下面的程序:   public class EvalDemo {    public static void main(String[] args) {    EvalDemo e = new EvalDemo();    e.printIt("One, ")    .printIt("Two, ")    .printIt("Three.");    }    public EvalDemo printIt(String s) {    System.out.print(s);    return this;    }   }   该程序中定义了一个含有很有趣的设计的方法 printIt(),其返回类型为类名 EvalDemo ,方法的最后是一个 return 语句,返回当前实例,即 this。因此,对于该类的一个给定实例,我们可以编写如下代码:   e.printIt("One, ").printIt("Two, ").printIt("Three.");   对 printIt() 的每一个调用都完成一个单位工作,此处为输出一条信息,并且 再一次生成 (求取) 当前对象。表达式求值得以继续进行:    .printIt("Two, ").printIt("Three.");   求值过程直到整个表达式都算完才结束。   该程序的输出证实了从左到右的计算规则:   D:\>java EvalDemo   One, Two, Three.   任何时候当你有一个带 void 方法的类需要设计时,也就是说,方法不需要返回返回某个特定值时,你可以用该策略来支持方法串联。      
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表