{"id":6560,"date":"2024-04-21T23:56:41","date_gmt":"2024-04-22T06:56:41","guid":{"rendered":"https:\/\/zentut.com\/java-tutorial\/java-object\/"},"modified":"2024-04-21T23:57:11","modified_gmt":"2024-04-22T06:57:11","slug":"java-object","status":"publish","type":"page","link":"https:\/\/www.zentut.com\/java-tutorial\/java-object\/","title":{"rendered":"Java Object"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you will learn about Java <code>Object<\/code> which serves as the base class for all classes in Java.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction to Java Object<\/h2>\n\n\n\n<p>The <code>java.lang.Object<\/code> class is the base class of all <a href=\"https:\/\/zentut.com\/java-tutorial\/java-class\/\">classes<\/a> in Java.<\/p>\n\n\n\n<p>It means that when you define a class, it is implicitly a subclass of the <code>Object<\/code> class. Also, the class automatically inherits a set of methods from the <code>Object<\/code> class.<\/p>\n\n\n\n<p>Suppose that you have a <code>Person<\/code> class with two fields <code>ssn<\/code> and <code>name<\/code>, and a <a href=\"https:\/\/zentut.com\/java-tutorial\/java-constructor\/\">constructor<\/a>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{\n    <span class=\"hljs-keyword\">private<\/span> String ssn;\n    <span class=\"hljs-keyword\">private<\/span> String name;\n\n    <span class=\"hljs-comment\">\/\/ Getters and setters (omitted for brevity)<\/span>\n\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">Person<\/span><span class=\"hljs-params\">(String ssn, String name)<\/span><\/span>{\n        <span class=\"hljs-keyword\">this<\/span>.ssn = ssn;\n        <span class=\"hljs-keyword\">this<\/span>.name = name;\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>It is like defining the <code>Person<\/code> class that extends the <code>Object<\/code> class:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Object<\/span> <\/span>{\n   <span class=\"hljs-comment\">\/\/ ...<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>However, it is not necessary since Java does it implicitly for us.<\/p>\n\n\n\n<p>We&#8217;ll explore the methods provided by the <code>Object<\/code> class and demonstrate how to override them to enhance the utility of your class.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Java Object methods<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1) getClass()<\/h3>\n\n\n\n<p>The <code>getClass()<\/code> method returns the runtime class of an object:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">var<\/span> cls = obj.getClass();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this syntax, the <code>cls<\/code> is an instance of the <code>java.lang.Class<\/code> class.<\/p>\n\n\n\n<p>Typically, you use the <code>getClass()<\/code> method to check if two objects are instances of the same class.<\/p>\n\n\n\n<p>If the <code>getClass()<\/code> method of two objects returns the same value, they are instances of the same class.<\/p>\n\n\n\n<p>For example, the following shows the return value of the <code>getClass()<\/code> method of a <code>Person<\/code> object:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        <span class=\"hljs-keyword\">var<\/span> person = <span class=\"hljs-keyword\">new<\/span> Person(\n                <span class=\"hljs-string\">\"212-15-8397\"<\/span>,\n                <span class=\"hljs-string\">\"John Doe\"<\/span>\n        );\n        System.out.println(person.getClass());\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">2) equals(Object obj)<\/h3>\n\n\n\n<p>By default, the <code>equals()<\/code> method returns true if two variables reference the same object. <\/p>\n\n\n\n<p>Typically, you override the <code>equals()<\/code> method to compare two objects by their contents.<\/p>\n\n\n\n<p>The following example creates two Person objects with the same <code>ssn<\/code> and <code>name<\/code>, and uses the <code>equals()<\/code> method to compare them:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        <span class=\"hljs-keyword\">var<\/span> p1 = <span class=\"hljs-keyword\">new<\/span> Person(<span class=\"hljs-string\">\"212-15-8397\"<\/span>, <span class=\"hljs-string\">\"John Doe\"<\/span>);\n        <span class=\"hljs-keyword\">var<\/span> p2 = <span class=\"hljs-keyword\">new<\/span> Person(<span class=\"hljs-string\">\"212-15-8397\"<\/span>, <span class=\"hljs-string\">\"John Doe\"<\/span>);\n        <span class=\"hljs-keyword\">var<\/span> result = p1.equals(p2);\n        System.out.println(result);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">false<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Since the Person class inherits the <code>equals()<\/code> method from the Object class, the <code>equals()<\/code> method checks if two variables reference the same object:<\/p>\n\n\n\n<p>The program displays false because <code>p1<\/code> and <code>p2<\/code> variables reference different <code>Person<\/code> objects even though they have the same <code>ssn<\/code> and <code>name<\/code> values.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.util.Objects;\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{\n    <span class=\"hljs-keyword\">private<\/span> String ssn;\n    <span class=\"hljs-keyword\">private<\/span> String name;\n\n    <span class=\"hljs-comment\">\/\/ Getters and setters (omitted for brevity)<\/span>\n\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">Person<\/span><span class=\"hljs-params\">(String ssn, String name)<\/span> <\/span>{\n        <span class=\"hljs-keyword\">this<\/span>.ssn = ssn;\n        <span class=\"hljs-keyword\">this<\/span>.name = name;\n    }\n\n    <span class=\"hljs-meta\">@Override<\/span>\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">boolean<\/span> <span class=\"hljs-title\">equals<\/span><span class=\"hljs-params\">(Object obj)<\/span> <\/span>{\n\n        <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-keyword\">this<\/span> == obj) <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">true<\/span>;\n\n        <span class=\"hljs-keyword\">if<\/span> (obj == <span class=\"hljs-keyword\">null<\/span> || obj.getClass() != getClass()) {\n            <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">false<\/span>;\n        }\n\n        Person other = (Person) obj;\n\n        <span class=\"hljs-keyword\">return<\/span> ssn.equals(other.ssn) &amp;&amp; name.equals(other.name);\n\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this <code>Person<\/code> class, we override the <code>equals()<\/code> method of the <code>Object<\/code> class that returns true if all the fields of the of the <code>Person<\/code> objects are equal.<\/p>\n\n\n\n<p>First, check if the object being compared is the same as the current instance and return true if they are the same reference:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-keyword\">this<\/span> == obj) <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">true<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, return false if the object being compared is null or if its class differs from the class of the current instance:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">if<\/span> (obj == <span class=\"hljs-keyword\">null<\/span> || obj.getClass() != getClass()) {\n   <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">false<\/span>;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Third, compare the <code>ssn<\/code> and <code>name<\/code> fields of the object being compared with the current instance and return true if they are equal:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">return<\/span> ssn.equals(other.ssn) &amp;&amp; name.equals(other.name);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Now, if two <code>Person<\/code> objects have the same <code>ssn<\/code> and <code>name<\/code>, they should be equal when you compare them using the <code>equals()<\/code> method:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        <span class=\"hljs-keyword\">var<\/span> p1 = <span class=\"hljs-keyword\">new<\/span> Person(<span class=\"hljs-string\">\"212-15-8397\"<\/span>, <span class=\"hljs-string\">\"John Doe\"<\/span>);\n        <span class=\"hljs-keyword\">var<\/span> p2 = <span class=\"hljs-keyword\">new<\/span> Person(<span class=\"hljs-string\">\"212-15-8397\"<\/span>, <span class=\"hljs-string\">\"John Doe\"<\/span>);\n\n        <span class=\"hljs-keyword\">var<\/span> result = p1.equals(p2);\n\n        System.out.println(result); <span class=\"hljs-comment\">\/\/ true<\/span>\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">3) hashCode()<\/h3>\n\n\n\n<p>The <code>hashCode()<\/code> method returns a unique integer that represents an object. If two objects are equal, they should have the same hash code. <\/p>\n\n\n\n<p>Therefore, if you override the <code>equals()<\/code> method, you should also override the <code>hashcode()<\/code> method.<\/p>\n\n\n\n<p>To generate a hash code for a sequence of input values, you can use the static method <code>hash()<\/code> of the <code>Objects<\/code> class from <code>java.util<\/code> package.<\/p>\n\n\n\n<p>Here&#8217;s the modified version of the <code>Person<\/code> class that includes a <code>hashCode<\/code> method:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.util.Objects;\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{\n    <span class=\"hljs-keyword\">private<\/span> String ssn;\n    <span class=\"hljs-keyword\">private<\/span> String name;\n\n    <span class=\"hljs-comment\">\/\/ Getters and setters (omitted for brevity)<\/span>\n\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">Person<\/span><span class=\"hljs-params\">(String ssn, String name)<\/span> <\/span>{\n        <span class=\"hljs-keyword\">this<\/span>.ssn = ssn;\n        <span class=\"hljs-keyword\">this<\/span>.name = name;\n    }\n\n    <span class=\"hljs-meta\">@Override<\/span>\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">boolean<\/span> <span class=\"hljs-title\">equals<\/span><span class=\"hljs-params\">(Object obj)<\/span> <\/span>{\n\n        <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-keyword\">this<\/span> == obj) <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">true<\/span>;\n\n        <span class=\"hljs-keyword\">if<\/span> (obj == <span class=\"hljs-keyword\">null<\/span> || obj.getClass() != getClass()) {\n            <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">false<\/span>;\n        }\n\n        Person other = (Person) obj;\n\n        <span class=\"hljs-keyword\">return<\/span> ssn.equals(other.ssn) &amp;&amp; name.equals(other.name);\n\n    }\n\n    <span class=\"hljs-meta\">@Override<\/span>\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">hashCode<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n        <span class=\"hljs-keyword\">return<\/span> Objects.hash(ssn, name);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The following displays the hash codes of the <code>p1<\/code> and <code>p2<\/code> objects:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        <span class=\"hljs-keyword\">var<\/span> p1 = <span class=\"hljs-keyword\">new<\/span> Person(<span class=\"hljs-string\">\"212-15-8397\"<\/span>, <span class=\"hljs-string\">\"John Doe\"<\/span>);\n        <span class=\"hljs-keyword\">var<\/span> p2 = <span class=\"hljs-keyword\">new<\/span> Person(<span class=\"hljs-string\">\"212-15-8397\"<\/span>, <span class=\"hljs-string\">\"John Doe\"<\/span>);\n\n        <span class=\"hljs-keyword\">var<\/span> result = p1.equals(p2);\n\n        System.out.println(result); <span class=\"hljs-comment\">\/\/ true<\/span>\n\n        System.out.println(p1.hashCode());\n        System.out.println(p2.hashCode());\n\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">true<\/span>\n-<span class=\"hljs-number\">1693213186<\/span>\n-<span class=\"hljs-number\">1693213186<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">4) toString()<\/h3>\n\n\n\n<p>The <code>toString()<\/code> method returns a string representation of an object. The following displays the default string representation of a <code>Person<\/code> object:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">App<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        <span class=\"hljs-keyword\">var<\/span> person = <span class=\"hljs-keyword\">new<\/span> Person(\n                <span class=\"hljs-string\">\"212-15-8397\"<\/span>,\n                <span class=\"hljs-string\">\"John Doe\"<\/span>\n        );\n        System.out.println(person);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">Person@<span class=\"hljs-number\">9<\/span>b139dfe<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>When we pass the <code>Person<\/code> object to the <code>println()<\/code> method, it invokes the <code>toString()<\/code> method of the <code>Person<\/code> object and displays the resulting string on the screen. <\/p>\n\n\n\n<p>As you can see clearly from the output, the default return value of the <code>toString()<\/code> is not human-readable.<\/p>\n\n\n\n<p>Usually, you override the <code>toString()<\/code> method to provide the human-readable string representation of the object. For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.util.Objects;\n\n<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{\n    <span class=\"hljs-keyword\">private<\/span> String ssn;\n    <span class=\"hljs-keyword\">private<\/span> String name;\n\n    <span class=\"hljs-comment\">\/\/ Getters and setters (omitted for brevity)<\/span>\n\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">Person<\/span><span class=\"hljs-params\">(String ssn, String name)<\/span> <\/span>{\n        <span class=\"hljs-keyword\">this<\/span>.ssn = ssn;\n        <span class=\"hljs-keyword\">this<\/span>.name = name;\n    }\n\n    <span class=\"hljs-meta\">@Override<\/span>\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">boolean<\/span> <span class=\"hljs-title\">equals<\/span><span class=\"hljs-params\">(Object obj)<\/span> <\/span>{\n\n        <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-keyword\">this<\/span> == obj) <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">true<\/span>;\n\n        <span class=\"hljs-keyword\">if<\/span> (obj == <span class=\"hljs-keyword\">null<\/span> || obj.getClass() != getClass()) {\n            <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">false<\/span>;\n        }\n\n        Person other = (Person) obj;\n\n        <span class=\"hljs-keyword\">return<\/span> ssn.equals(other.ssn) &amp;&amp; name.equals(other.name);\n\n    }\n\n    <span class=\"hljs-meta\">@Override<\/span>\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">hashCode<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n        <span class=\"hljs-keyword\">return<\/span> Objects.hash(ssn, name);\n    }\n\n    <span class=\"hljs-meta\">@Override<\/span>\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> String <span class=\"hljs-title\">toString<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-string\">\"Person{\"<\/span> +\n                <span class=\"hljs-string\">\"ssn='\"<\/span> + ssn + <span class=\"hljs-string\">'\\''<\/span> +\n                <span class=\"hljs-string\">\", name='\"<\/span> + name + <span class=\"hljs-string\">'\\''<\/span> +\n                <span class=\"hljs-string\">'}'<\/span>;\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this example, we override the toString() method of the <code>Person<\/code> class to display all the field names and values.<\/p>\n\n\n\n<p>If you run the program that displays a <code>Person<\/code> object on the screen, you&#8217;ll see something like this:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">Person{ssn=<span class=\"hljs-string\">'212-15-8397'<\/span>, name=<span class=\"hljs-string\">'John Doe'<\/span>}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">clone() &amp; finalize()<\/h3>\n\n\n\n<p>The <code>Object<\/code> class also has the following methods:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>clone()<\/code>: This method creates a shallow copy of an object <\/li>\n\n\n\n<li><code>finalize()<\/code>: This method performs the cleanup operations. <\/li>\n<\/ul>\n\n\n\n<p>In practice, you&#8217;ll rarely use these methods so we don&#8217;t cover them in this tutorial. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In Java, every class is a subclass of the <code>java.lang.Object<\/code> class.<\/li>\n\n\n\n<li>The Java <code>Object<\/code> class provides a number of useful methods for overriding in the subclass including <code>equals()<\/code>, <code>hashCode()<\/code>, and <code>toString()<\/code>.<\/li>\n\n\n\n<li>Override <code>equals()<\/code> and <code>hashCode()<\/code> to provide logic for comparing two objects by their contents.<\/li>\n\n\n\n<li>Override <code>toString()<\/code> method to provide a meaningful string representation of an object.<\/li>\n\n\n\n<li>Use the <code>getClass()<\/code> method to check the object&#8217;s type at runtime.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Summary: in this tutorial, you will learn about Java Object which serves as the base class for all classes in Java. Introduction to Java Object The java.lang.Object class is the base class of all classes in Java. It means that when you define a class, it is implicitly a subclass of the Object class. Also, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":2190,"menu_order":39,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6560","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.zentut.com\/wp-json\/wp\/v2\/pages\/6560","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zentut.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.zentut.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.zentut.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zentut.com\/wp-json\/wp\/v2\/comments?post=6560"}],"version-history":[{"count":2,"href":"https:\/\/www.zentut.com\/wp-json\/wp\/v2\/pages\/6560\/revisions"}],"predecessor-version":[{"id":6562,"href":"https:\/\/www.zentut.com\/wp-json\/wp\/v2\/pages\/6560\/revisions\/6562"}],"up":[{"embeddable":true,"href":"https:\/\/www.zentut.com\/wp-json\/wp\/v2\/pages\/2190"}],"wp:attachment":[{"href":"https:\/\/www.zentut.com\/wp-json\/wp\/v2\/media?parent=6560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}