Path: csiph.com!usenet.pasdenom.info!aioe.org!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Eric Sosman Newsgroups: comp.lang.java.programmer Subject: Re: Java blunders Date: Wed, 30 Jul 2014 08:05:34 -0400 Organization: A noiseless patient Spider Lines: 29 Message-ID: References: <53cef75d$0$291$14726298@news.sunsite.dk> <7s6vs9p395bretqrtdvh9i6til83vfk52p@4ax.com> <53d04b5f$0$291$14726298@news.sunsite.dk> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Wed, 30 Jul 2014 12:05:37 +0000 (UTC) Injection-Info: mx05.eternal-september.org; posting-host="bd4e1cba8d8592bec5d5ed9e4537fbfd"; logging-data="10429"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19bGypV6L5VoKTKvpuz11Cr" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 In-Reply-To: Cancel-Lock: sha1:dq1vyG4aGTV2rFFtgxnQDZ6aPfo= Xref: csiph.com comp.lang.java.programmer:29439 On 7/30/2014 5:07 AM, Jukka Lahtinen wrote: > Eric Sosman writes: > >> On 7/28/2014 4:23 PM, Josip Almasi wrote: >>> It's about how operator gets interpreted: >>> out.println ( new StringBuffer("the answer is ").append(new >>> StringBuffer(a + b)).append(new StringBuffer(".")); > >> Why do you think this is so? javac 1.8.0_11 compiles it to >> the equivalent of >> out.println(new StringBuilder() >> .append("the answer is ") >> .append(a + b) >> .append(".") >> .toString()); > > You could drop one append call by using another constructor: > out.println(newStringBuilder("the answer is ") > .append(a + b) > .append(".") > .toString()); You could, but javac doesn't. You could also drop the toString() call by using a different println() overload -- but again, javac doesn't. -- esosman@comcast-dot-net.invalid