{"id":25333,"date":"2024-03-16T04:45:35","date_gmt":"2024-03-16T04:45:35","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/"},"modified":"2024-03-22T05:55:14","modified_gmt":"2024-03-22T05:55:14","slug":"how-to-correctly-use-and-equals-in-java","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/","title":{"rendered":"How to correctly use == and equals in Java?"},"content":{"rendered":"<p>In Java, both == and equals are methods used to compare objects, but they serve different purposes and behave differently.<\/p>\n<ol>\n<li>Operator:<\/li>\n<li>For primitive data types, the comparison is based on whether the values are equal.<\/li>\n<li>For reference data types, the comparison is based on whether the object references are equal, i.e., whether they point to the same memory address.<\/li>\n<li>For example:<\/li>\n<li>int a = 5, b = 5;<br \/>\nSystem.out.println(a == b); \/\/ prints true<\/p>\n<p>String str1 = &#8220;hello&#8221;;<br \/>\nString str2 = &#8220;hello&#8221;;<br \/>\nString str3 = new String(&#8220;hello&#8221;);<br \/>\nSystem.out.println(str1 == str2); \/\/ prints true<br \/>\nSystem.out.println(str1 == str3); \/\/ prints false<\/li>\n<li>equals() method:<\/li>\n<li>For primitive data types, the equals() method has not been overridden and still uses == for comparison.<\/li>\n<li>By default, for reference data types, the equals() method is the same as ==, comparing if the references are equal.<\/li>\n<li>Usually, we need to override the equals() method to customize the logic for comparing objects. Overriding the equals() method must meet the following conditions:\n<p>Reflexivity: For any non-null reference x, x.equals(x) should return true.<br \/>\nSymmetry: For any non-null references x and y, if x.equals(y) returns true, then y.equals(x) should also return true.<br \/>\nTransitivity: For any non-null references x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should also return true.<br \/>\nConsistency: For any non-null references x and y, if the information in the objects has not been modified, multiple calls to x.equals(y) should return the same result.<br \/>\nFor any non-null reference x, x.equals(null) should return false.<\/li>\n<li>For example,<\/li>\n<li>The Person class defines a method to check if two Person objects are equal based on their name and age.<\/li>\n<li>Example of use:<\/li>\n<li>Person person1 = new Person(&#8220;Alice&#8221;, 20);<br \/>\nPerson person2 = new Person(&#8220;Alice&#8221;, 20);<br \/>\nPerson person3 = new Person(&#8220;Bob&#8221;, 25);<\/p>\n<p>System.out.println(person1.equals(person2)); \/\/ Output: true<br \/>\nSystem.out.println(person1.equals(person3)); \/\/ Output: false<\/li>\n<\/ol>\n<p>In conclusion:<\/p>\n<ol>\n<li>It is used to compare the values of primitive data types and to check if the references of reference data types are equal.<\/li>\n<li>The `equals()` method is used to compare the values of reference data types to see if they are equal, and it needs to be overridden based on specific business logic.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>In Java, both == and equals are methods used to compare objects, but they serve different purposes and behave differently. Operator: For primitive data types, the comparison is based on whether the values are equal. For reference data types, the comparison is based on whether the object references are equal, i.e., whether they point to [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-25333","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to correctly use == and equals in Java? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to correctly use == and equals in Java?\" \/>\n<meta property=\"og:description\" content=\"In Java, both == and equals are methods used to compare objects, but they serve different purposes and behave differently. Operator: For primitive data types, the comparison is based on whether the values are equal. For reference data types, the comparison is based on whether the object references are equal, i.e., whether they point to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-16T04:45:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T05:55:14+00:00\" \/>\n<meta name=\"author\" content=\"Ava Mitchell\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ava Mitchell\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/\"},\"author\":{\"name\":\"Ava Mitchell\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64\"},\"headline\":\"How to correctly use == and equals in Java?\",\"datePublished\":\"2024-03-16T04:45:35+00:00\",\"dateModified\":\"2024-03-22T05:55:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/\"},\"wordCount\":379,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/\",\"name\":\"How to correctly use == and equals in Java? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-16T04:45:35+00:00\",\"dateModified\":\"2024-03-22T05:55:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to correctly use == and equals in Java?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64\",\"name\":\"Ava Mitchell\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g\",\"caption\":\"Ava Mitchell\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/avamitchell\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to correctly use == and equals in Java? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/","og_locale":"en_US","og_type":"article","og_title":"How to correctly use == and equals in Java?","og_description":"In Java, both == and equals are methods used to compare objects, but they serve different purposes and behave differently. Operator: For primitive data types, the comparison is based on whether the values are equal. For reference data types, the comparison is based on whether the object references are equal, i.e., whether they point to [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-16T04:45:35+00:00","article_modified_time":"2024-03-22T05:55:14+00:00","author":"Ava Mitchell","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Ava Mitchell","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/"},"author":{"name":"Ava Mitchell","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64"},"headline":"How to correctly use == and equals in Java?","datePublished":"2024-03-16T04:45:35+00:00","dateModified":"2024-03-22T05:55:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/"},"wordCount":379,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/","name":"How to correctly use == and equals in Java? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-16T04:45:35+00:00","dateModified":"2024-03-22T05:55:14+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-correctly-use-and-equals-in-java\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to correctly use == and equals in Java?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64","name":"Ava Mitchell","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g","caption":"Ava Mitchell"},"url":"https:\/\/www.silicloud.com\/blog\/author\/avamitchell\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/25333","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=25333"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/25333\/revisions"}],"predecessor-version":[{"id":59430,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/25333\/revisions\/59430"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=25333"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=25333"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=25333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}