From d53ae92e8b1950dcf6d8de8c03feb305bc8c2158 Mon Sep 17 00:00:00 2001
From: "Dr. Martin Goik" <goik@hdm-stuttgart.de>
Date: Tue, 26 Jan 2021 18:57:54 +0100
Subject: [PATCH] Extended string copy constructor explanation

---
 Doc/Sd1/coreClasses.xml | 63 ++++++++++++++++++++++++++++++++++++++---
 1 file changed, 59 insertions(+), 4 deletions(-)

diff --git a/Doc/Sd1/coreClasses.xml b/Doc/Sd1/coreClasses.xml
index 73db85113..7adac727a 100644
--- a/Doc/Sd1/coreClasses.xml
+++ b/Doc/Sd1/coreClasses.xml
@@ -62,11 +62,66 @@
   <figure xml:id="sd1_coreclasses_fig_stringCopyConstructorApiHint">
     <title>String copy constructor</title>
 
-    <programlisting language="java">String s = new String("Eve");</programlisting>
+    <informaltable border="1">
+      <tr>
+        <th>Code</th>
+
+        <th>Output</th>
+      </tr>
+
+      <tr>
+        <td valign="top"><programlisting language="java">final String s = "Eve"; <co
+              linkends="sd1_coreclasses_fig_stringCopyConstructorApiHint-1"
+              xml:id="sd1_coreclasses_fig_stringCopyConstructorApiHint-1-co"/>
+final String sCopy = new <link
+              xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#%3Cinit%3E(java.lang.String)">String</link>(s); <co
+              linkends="sd1_coreclasses_fig_stringCopyConstructorApiHint-2"
+              xml:id="sd1_coreclasses_fig_stringCopyConstructorApiHint-2-co"/>
+System.out.println("sCopy == s: " + (sCopy == s)); <co
+              linkends="sd1_coreclasses_fig_stringCopyConstructorApiHint-3"
+              xml:id="sd1_coreclasses_fig_stringCopyConstructorApiHint-3-co"/>
+System.out.println("sCopy.equals(s): " + sCopy.equals(s)); <co
+              linkends="sd1_coreclasses_fig_stringCopyConstructorApiHint-4"
+              xml:id="sd1_coreclasses_fig_stringCopyConstructorApiHint-4-co"/></programlisting></td>
+
+        <td valign="top"><screen>sCopy == s: false <coref
+              linkend="sd1_coreclasses_fig_stringCopyConstructorApiHint-3-co"/>
+sCopy.equals(s): true <coref
+              linkend="sd1_coreclasses_fig_stringCopyConstructorApiHint-4-co"/></screen></td>
+      </tr>
+    </informaltable>
 
-    <para>Uses constructor <methodname
-    xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#%3Cinit%3E(java.lang.String)">public
-    String(String original)</methodname>.</para>
+    <calloutlist role="slideExclude">
+      <callout arearefs="sd1_coreclasses_fig_stringCopyConstructorApiHint-1-co"
+               role="slideExclude"
+               xml:id="sd1_coreclasses_fig_stringCopyConstructorApiHint-1">
+        <para>The string literal <code language="java">"Eve"</code>
+        corresponds to an instance of <classname>String</classname>. Its
+        reference is being assigned to variable <code
+        language="java">s</code>.</para>
+      </callout>
+
+      <callout arearefs="sd1_coreclasses_fig_stringCopyConstructorApiHint-2-co"
+               xml:id="sd1_coreclasses_fig_stringCopyConstructorApiHint-2">
+        <para>A clone carrying the same value <code
+        language="java">"Eve"</code> is being created by virtue of the
+        <classname
+        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#%3Cinit%3E(java.lang.String)">String</classname>
+        class copy constructor.</para>
+      </callout>
+
+      <callout arearefs="sd1_coreclasses_fig_stringCopyConstructorApiHint-3-co"
+               xml:id="sd1_coreclasses_fig_stringCopyConstructorApiHint-3">
+        <para>We indeed have two distinct objects.</para>
+      </callout>
+
+      <callout arearefs="sd1_coreclasses_fig_stringCopyConstructorApiHint-4-co"
+               xml:id="sd1_coreclasses_fig_stringCopyConstructorApiHint-4">
+        <para>But both <classname
+        xlink:href="https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#%3Cinit%3E(java.lang.String)">String</classname>
+        instances carry the same value.</para>
+      </callout>
+    </calloutlist>
   </figure>
 
   <figure xml:id="sd1_coreclasses_fig_stringCopyConstructor">
-- 
GitLab