Explaining a better way to Java language design to beginners.
David Alayachew
davidalayachew at gmail.com
Tue Apr 16 22:07:07 UTC 2024
You missed a point.
String is the single most used class in Java BY FAR. Nothing comes close to
it. And the Java designers knew this would happen before hand.
When you are the literal most used class in Java, you get a few privileges.
Using + for concatenation is only one of them.
String is informally known as a "Blessed Type". This is an informal name to
represent types that are so frequently used or so useful that they get
treated differently by the JVM.
So, in short, blessed types get some extra love and some extra privileges.
Since String is a "Blessed Type", it gets many privileges, one of which is
the + operator.
On Tue, Apr 16, 2024, 12:43 PM tzengshinfu <tzengshinfu at gmail.com> wrote:
> Hi, folks,
>
> I'm glad that "JEP 463: Implicitly Declared Classes and Instance main
> Methods" can help beginners start writing basic programs with limited
> skills and understanding. However, recently I came across this post [
> https://twitter.com/relizarov/status/1767978534314627304] and I recall
> having asked similar questions here before [
> https://mail.openjdk.org/pipermail/amber-dev/2023-October/008334.html].
> But today, I am explaining Java's design to a beginner from the perspective
> of a semi-experienced developer.
>
> As we transitioned our tech stack from C# to the Java ecosystem, we also
> welcomed a new colleague who was previously accustomed to PHP. During my
> guidance on Java, we had the following conversation:
>
> New colleague: Why do we use `equals()` for string comparison instead of
> `==` or `===`?
> Me: Because `String` is an object.
> New colleague: Then why can we concatenate strings with the `+` operator?
> Me: The `+` operator is actually shorthand for `StringBuilder.append()`.
> From an OOP perspective, you can also use `string1.concat(string2)`.
> New colleague: Why isn't the `+` operator used for `BigDecimal` addition
> here?
> Me: Because it's also an object...
> New colleague: Looking back, if strings are objects, shouldn't it be
> `String string1 = new String()` and then `string1.setValue(new char[] {
> 's', 't', 'r', 'i', 'n', 'g' })`?
> Me: That would be too cumbersome... By the way, how did you compare
> strings in PHP?
> New colleague: `===`, `strcmp()` is also an option, but less common.
> And after many more questions...
> Me: Don't ask, just write, let it become a part of you!
>
> Do you have any better explanations for Java's design for beginners?
>
>
> /* GET BETTER EVERY DAY */
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/amber-dev/attachments/20240416/3160c728/attachment-0001.htm>
More information about the amber-dev
mailing list