Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #25361

Re: StringBuilder.append and CharSequence

From Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at>
Newsgroups comp.lang.java.programmer
Subject Re: StringBuilder.append and CharSequence
Date 2013-09-26 18:01 +0000
Organization A noiseless patient Spider
Message-ID <slrnl48tkb.mol.avl@gamma.logic.tuwien.ac.at> (permalink)
References <slrnl45s71.mol.avl@gamma.logic.tuwien.ac.at> <52438692$0$292$14726298@news.sunsite.dk>

Show all headers | View raw


Arne Vajhøj <arne@vajhoej.dk> wrote:
> On 9/25/2013 10:19 AM, Andreas Leitgeb wrote:
>> Is it safe to use "stringBuilder.append(this);" in a CharSequence
>> implementation's .toString(), or could this lead to a recursive
>> loop, if some version of a Java class library implements the
>> append() for CharSequence by using it's toString() ?
>> I read the javadoc for StringBuilder/Appendable.append(CharSequence)
>> but it isn't clear to me.
>
> Java docs for StringBuilder says:
> <quote>
> The principal operations on a StringBuilder are the append and insert 
> methods, which are overloaded so as to accept data of any type. Each 
> effectively converts a given datum to a string and then appends or 
> inserts the characters of that string to the string builder.
> </quote>
>
> Based on the use of "string" and "and then" I interpret this as:
> <interpretation>
> Append has two distinct sequential phases:
> 1) convert the argument to an instance of java.util.String
> 2) append that to the StringBuilder
> </interpretation>

If .append() used .toString(), then there wouldn't be a point for offering
a CharSequence overload. It could then just offer one overload for Object
(apart from those for primitive types), and be set.

So, while the documentation's verbiage is unclear, other facts appear to
hint towards a reasonable behaviour that avoids any unnecessary temporary
String instance.

> And that would mean that:
> sb.append(sb);
> is a safe and well defined operation.

That would work even without the detour to String, as long as StringBuilder
captures the initial *length()* of the passed CharSequence (itself), and then
only appended that number of chars.

StringBuilder's insert() is a much more delicate test case, as the Javadoc
for .insert() doesn't seem to take into account, that the given CharSequence
might "magically" change during the operation.

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-25 14:19 +0000
  Re: StringBuilder.append and CharSequence markspace <markspace@nospam.nospam> - 2013-09-25 13:02 -0700
    Re: StringBuilder.append and CharSequence markspace <markspace@nospam.nospam> - 2013-09-25 18:34 -0700
      Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-26 17:37 +0000
        Re: StringBuilder.append and CharSequence Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2013-09-26 23:11 +0200
          Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-27 13:30 +0000
            Re: StringBuilder.append and CharSequence Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2013-09-27 19:31 +0200
              Re: StringBuilder.append and CharSequence markspace <markspace@nospam.nospam> - 2013-09-27 13:45 -0700
                Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-27 23:16 +0000
                Re: StringBuilder.append and CharSequence Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2013-09-29 04:58 +0200
                Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-30 20:02 +0000
  Re: StringBuilder.append and CharSequence Arne Vajhøj <arne@vajhoej.dk> - 2013-09-25 20:57 -0400
    Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-26 18:01 +0000
      Re: StringBuilder.append and CharSequence Arne Vajhøj <arne@vajhoej.dk> - 2013-09-26 15:47 -0400
        Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-26 20:48 +0000
          Re: StringBuilder.append and CharSequence Arne Vajhøj <arne@vajhoej.dk> - 2013-09-26 16:58 -0400
            Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-27 12:52 +0000
              Re: StringBuilder.append and CharSequence Arne Vajhøj <arne@vajhoej.dk> - 2013-10-04 20:59 -0400
                Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-10-05 12:51 +0000
  Re: StringBuilder.append and CharSequence Sven Köhler <remove-sven.koehler@gmail.com> - 2013-09-27 15:41 +0300

csiph-web