Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Wed, 05 Oct 2011 12:21:39 -0500 Date: Wed, 05 Oct 2011 10:21:40 -0700 From: Patricia Shanahan User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.22) Gecko/20110902 Thunderbird/3.1.14 MIME-Version: 1.0 Newsgroups: comp.lang.java.programmer Subject: Re: I don't why I get 'not a statement' error in the following code... References: <7de755e8-3339-4c3c-95a0-03d0e4aab701@5g2000yqo.googlegroups.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Message-ID: Lines: 51 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 70.230.200.54 X-Trace: sv3-80rlpN3ud6iRzp3q0JTLUkWO/vQ3I9HlXbMSHJCCvLzU7oJ0hqQcKPx9cG/r4vHa3QAxmIztZwF4JmU!C6w3LUosfRo+WgxbMC9eFS65e1w7RCLZaLtqW8s1Lp004lRkcVa02vMSbHenequDjqTX6YMAcbhZ!JpGVK4bF+ujVnjThe1XU/bZWchYmPW8Xn4fCAJccIwMNNQ== X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 3300 Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:8576 On 10/5/2011 8:13 AM, Chad wrote: > On Oct 4, 10:16 pm, Patricia Shanahan wrote: >> On 10/4/2011 2:55 PM, Chad wrote: >> >> >> >> >> >>> On Oct 4, 11:33 am, Patricia Shanahan wrote: >>>> On 10/4/2011 11:16 AM, Chad wrote: >>>> ... >> >>>>> I don't get why 'Test.x;' in main() isn't a variable. The expression >>>>> 'Test.x' ends with a semicolon. So I just assumed it was a valid >>>>> statement. However, the java compiler tells me something different. >>>>> Ideas? Possible hints? >> >>>> See the JLS,http://java.sun.com/docs/books/jls/third_edition/html/statements.html... >> >>>> Only certain types of expressions can be turned into a statement by >>>> adding a semicolon. They all have at least potential for side-effects at >>>> the top level. >> >>>> May I ask why you need to execute Test.x without doing anything with the >>>> result? >> >>> I still don't see why this expression can't be turned into a >>> statement. >> >> Primarily, it is a matter of language definition, which is why I >> included a link to the Java Language Specification. >> >> Are you saying that you think it is valid according to the JLS, or are >> you saying that you do not understand why the Java designers decided not >> to permit it? >> > > I guess I don't understand why the Java designers decided not to > permit it. I think to reduce source code that is pure decoration, with no effect on the program as run. A Java implementation is allowed to optimize, as long as it keeps both any results that are used and any side effects. Evaluating Test.x has no side effects, and the result is dead, so the entire statement would be dead code which the implementation can, and ideally should, firmly ignore. Patricia