What is the difference
between these two following
statements?
String s =
"text";
String s = new
String("text");
What is the difference
between these two following
statements?
String s =
"text";
String s = new
String("text");
new
String("text");
explicitly creates a new and referentially
distinct instance of a String
object; String s =
may reuse an instance from the string constant
"text";
pool if one is
available.
You very
rarely would ever want to use the new
constructor. From the
String(anotherString)
API:
href="http://java.sun.com/javase/6/docs/api/java/lang/String.html#String%28java.lang.String%29"
rel="noreferrer">String(String original)
:
Initializes a newly createdString
object
so that it represents the same sequence of characters as the argument; in other words,
the newly created string is a copy of the argument string. Unless an explicit copy of
original is needed, use of this constructor is unnecessary since strings are immutable.
Examine the following
snippet:
String s1 =
"foobar";
String s2 = "foobar";
System.out.println(s1
== s2); // true
s2 = new String("foobar");
System.out.println(s1 == s2); // false
System.out.println(s1.equals(s2)); //
true
==
on two reference types is a reference identity comparison. Two objects that are
equals
are not necessarily ==
. It is
usually wrong to use ==
on reference types; most of the time
equals
need to be used
instead.
Nonetheless, if for whatever reason you
need to create two equals
but not ==
string, you can use the new
constructor. It needs to be said again, however, that
String(anotherString)
this is very peculiar, and is rarely the
intention.
I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...
No comments:
Post a Comment