Explaining a better way to Java language design to beginners.

tzengshinfu tzengshinfu at gmail.com
Tue Apr 16 16:42:11 UTC 2024


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/20240417/ca4487f8/attachment.htm>


More information about the amber-dev mailing list