/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠM ak oto ĠConsult ing ĠGroup , ĠInc Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . mak ot ogo . learn . kotlin . equality Ċ Ċ import Ġcom . mak ot ogo . learn . kotlin . model . Person Ċ Ċ fun Ġequals Number () Ġ{ ĊĠĠĠ Ġprintln (" ******** ** Ġequals Number () Ġ********* * ") ĊĠĠĠ Ġprintln (" 2 0 0 : ĠhashCode Ġ= Ġ${ 2 0 0 . hashCode () }") ĊĠĠĠ Ġprintln (" 3 0 0 : ĠhashCode Ġ= Ġ${ 3 0 0 . hashCode () }") ĊĠĠĠ Ġprintln (" 2 0 0 + 1 0 0 Ġ= Ġ${ 2 0 0 + 1 0 0 }, ĠhashCode Ġ= Ġ${ ( 2 0 0 + 1 0 0 ). hashCode () }") ĊĠĠĠ Ġprintln (" 2 0 0 . equals ( 2 0 0 ): Ġ${ 2 0 0 . equals ( 2 0 0 )} ") ĊĠĠĠ Ġprintln (" 2 0 0 . equals ( 3 0 0 ): Ġ${ 2 0 0 . equals ( 3 0 0 )} ") ĊĠĠĠ Ġprintln (" 2 0 0 . equals ( 2 0 0 + 1 0 0 ): Ġ${ 3 0 0 . equals ( 2 0 0 + 1 0 0 )} ") Ċ } Ċ Ċ fun Ġequals Numeric String () Ġ{ ĊĠĠĠ Ġprintln (" ******** ** Ġequals Numeric String () Ġ********* * ") ĊĠĠĠ Ġprintln ("\" 2 0 0 \": ĠhashCode Ġ= Ġ${ " 2 0 0 ". hashCode () }") ĊĠĠĠ Ġprintln ("\" 3 0 0 \": ĠhashCode Ġ= Ġ${ " 3 0 0 ". hashCode () }") ĊĠĠĠ Ġprintln (" 2 0 0 . toString () Ġ= Ġ\" ${ 2 0 0 . toString () }\ ", ĠhashCode Ġ= Ġ${ 2 0 0 . toString (). hashCode () }") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" . equals (\" 2 0 0 \ "): Ġ${ " 2 0 0 ". equals (" 2 0 0 ") }") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" . equals (\" 3 0 0 \ "): Ġ${ " 2 0 0 ". equals (" 3 0 0 ") }") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" . equals ( 2 0 0 . toString ()): Ġ${ " 2 0 0 ". equals ( 2 0 0 . toString ()) }") Ċ } Ċ Ċ fun Ġequals Person () Ġ{ ĊĠĠĠ Ġval Ġd ou g Ġ= ĠPerson (" D avis ", Ġ" D ou glas ") ĊĠĠĠ Ġval Ġd ou g Clone Ġ= ĠPerson (" D avis ", Ġ" D ou glas ") ĊĠĠĠ Ġval Ġsame D ou g Ġ= Ġd ou g ĊĊĠĠĠ Ġprintln (" ******** ** Ġequals Person () Ġ********* * ") ĊĠĠĠ Ġprintln (" D ou g : Ġ$ dou g , ĠhashCode Ġ= Ġ${ dou g . hashCode () }") ĊĠĠĠ Ġprintln (" D ou g 's Ġclone : Ġ$ dou g Clone , ĠhashCode Ġ= Ġ${ dou g Clone . hashCode () }") ĊĠĠĠ Ġprintln (" dou g . equals ( dou g Clone ): Ġ${ dou g . equals ( dou g Clone )} ") ĊĠĠĠ Ġprintln (" dou g . equals ( same D ou g ): Ġ${ dou g . equals ( same D ou g )} ") Ċ Ċ } Ċ Ċ fun Ġstructural Equals Number () Ġ{ ĊĠĠĠ Ġprintln (" ******** ** Ġstructural Equals Number () Ġ********* * ") ĊĠĠĠ Ġprintln (" 2 0 0 : ĠhashCode Ġ= Ġ${ 2 0 0 . hashCode () }") ĊĠĠĠ Ġprintln (" 3 0 0 : ĠhashCode Ġ= Ġ${ 3 0 0 . hashCode () }") ĊĠĠĠ Ġprintln (" 2 0 0 + 1 0 0 : ĠhashCode Ġ= Ġ${ ( 2 0 0 + 1 0 0 ). hashCode () }") ĊĠĠĠ Ġprintln (" 2 0 0 Ġ== Ġ 2 0 0 : Ġ${ 2 0 0 Ġ== Ġ 2 0 0 }") ĊĠĠĠ Ġprintln (" 2 0 0 Ġ!= Ġ 2 0 0 : Ġ${ 2 0 0 Ġ!= Ġ 2 0 0 }") ĊĠĠĠ Ġprintln (" 2 0 0 Ġ== Ġ 3 0 0 : Ġ${ 2 0 0 Ġ== Ġ 3 0 0 }") ĊĠĠĠ Ġprintln (" 2 0 0 Ġ!= Ġ 3 0 0 : Ġ${ 2 0 0 Ġ!= Ġ 3 0 0 }") ĊĠĠĠ Ġprintln (" 3 0 0 Ġ== Ġ( 2 0 0 + 1 0 0 ): Ġ${ 3 0 0 Ġ== Ġ( 2 0 0 + 1 0 0 )} ") ĊĠĠĠ Ġprintln (" 3 0 0 Ġ!= Ġ( 2 0 0 + 1 0 0 ): Ġ${ 3 0 0 Ġ!= Ġ( 2 0 0 + 1 0 0 )} ") Ċ Ċ } Ċ Ċ fun Ġstructural Equals Numeric String () Ġ{ ĊĠĠĠ Ġprintln (" ******** ** Ġstructural Equals Numeric String () Ġ********* * ") ĊĠĠĠ Ġprintln ("\" 2 0 0 \": ĠhashCode Ġ= Ġ${ " 2 0 0 ". hashCode () }") ĊĠĠĠ Ġprintln ("\" 3 0 0 \": ĠhashCode Ġ= Ġ${ " 3 0 0 ". hashCode () }") ĊĠĠĠ Ġprintln (" 2 0 0 . toString () Ġ= Ġ\" ${ 2 0 0 . toString () }\ ", ĠhashCode Ġ= Ġ${ 2 0 0 . toString (). hashCode () }") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" Ġ== Ġ\" 2 0 0 \": Ġ${ " 2 0 0 " Ġ== Ġ" 2 0 0 "} ") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" Ġ!= Ġ\" 2 0 0 \": Ġ${ " 2 0 0 " Ġ!= Ġ" 2 0 0 "} ") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" Ġ== Ġ\" 3 0 0 \": Ġ${ " 2 0 0 " Ġ== Ġ" 3 0 0 "} ") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" Ġ!= Ġ\" 3 0 0 \": Ġ${ " 2 0 0 " Ġ!= Ġ" 3 0 0 "} ") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" Ġ== Ġ 2 0 0 . toString (): Ġ${ " 2 0 0 " Ġ== Ġ 2 0 0 . toString () }") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" Ġ!= Ġ 2 0 0 . toString (): Ġ${ " 2 0 0 " Ġ!= Ġ 2 0 0 . toString () }") Ċ } Ċ Ċ fun Ġstructural Equals Person () Ġ{ ĊĠĠĠ Ġval Ġd ou g Ġ= ĠPerson (" D avis ", Ġ" D ou glas ") ĊĠĠĠ Ġval Ġd ou g Clone Ġ= ĠPerson (" D avis ", Ġ" D ou glas ") ĊĠĠĠ Ġval Ġsame D ou g Ġ= Ġd ou g ĊĊĠĠĠ Ġprintln (" ******** ** Ġstructural Equals Person () Ġ********* * ") ĊĠĠĠ Ġprintln (" dou g : Ġ$ dou g , ĠhashCode Ġ= Ġ${ dou g . hashCode () }") ĊĠĠĠ Ġprintln (" dou g Clone : Ġ$ dou g Clone , ĠhashCode Ġ= Ġ${ dou g Clone . hashCode () }") ĊĠĠĠ Ġprintln (" another Person : Ġ$ same D ou g , ĠhashCode Ġ= Ġ${ same D ou g . hashCode () }") ĊĠĠĠ Ġprintln (" dou g Ġ== Ġd ou g Clone : Ġ${ dou g Ġ== Ġd ou g Clone }") ĊĠĠĠ Ġprintln (" dou g Ġ!= Ġd ou g Clone : Ġ${ dou g Ġ!= Ġd ou g Clone }") ĊĠĠĠ Ġprintln (" dou g Ġ== Ġsame D ou g : Ġ${ dou g Ġ== Ġsame D ou g }") ĊĠĠĠ Ġprintln (" dou g Ġ!= Ġsame D ou g : Ġ${ dou g Ġ!= Ġsame D ou g }") Ċ } Ċ Ċ fun Ġrefer ential Equals Number () Ġ{ ĊĠĠĠ Ġprintln (" ******** ** Ġrefer ential Equals Number () Ġ********* * ") ĊĠĠĠ Ġprintln (" 2 0 0 : ĠhashCode Ġ= Ġ${ 2 0 0 . hashCode () }") ĊĠĠĠ Ġprintln (" 3 0 0 : ĠhashCode Ġ= Ġ${ 3 0 0 . hashCode () }") ĊĠĠĠ Ġprintln (" 2 0 0 + 1 0 0 : ĠhashCode Ġ= Ġ${ ( 2 0 0 + 1 0 0 ). hashCode () }") ĊĠĠĠ Ġprintln (" 2 0 0 Ġ=== Ġ 2 0 0 : Ġ${ 2 0 0 Ġ=== Ġ 3 0 0 }") ĊĠĠĠ Ġprintln (" 2 0 0 Ġ!== Ġ 2 0 0 : Ġ${ 2 0 0 Ġ!== Ġ 3 0 0 }") ĊĠĠĠ Ġprintln (" 2 0 0 Ġ=== Ġ 3 0 0 : Ġ${ 2 0 0 Ġ=== Ġ 3 0 0 }") ĊĠĠĠ Ġprintln (" 2 0 0 Ġ!== Ġ 3 0 0 : Ġ${ 2 0 0 Ġ!== Ġ 3 0 0 }") ĊĠĠĠ Ġprintln (" 3 0 0 Ġ=== Ġ( 2 0 0 + 1 0 0 ): Ġ${ 3 0 0 Ġ=== Ġ( 2 0 0 + 1 0 0 )} ") ĊĠĠĠ Ġprintln (" 3 0 0 Ġ!== Ġ( 2 0 0 + 1 0 0 ): Ġ${ 3 0 0 Ġ!== Ġ( 2 0 0 + 1 0 0 )} ") Ċ } Ċ Ċ fun Ġrefer ential Equals Numeric String () Ġ{ ĊĠĠĠ Ġprintln (" ******** ** Ġrefer ential Equals Numeric String () Ġ********* * ") ĊĠĠĠ Ġprintln ("\" 2 0 0 \": ĠhashCode Ġ= Ġ${ " 2 0 0 ". hashCode () }") ĊĠĠĠ Ġprintln ("\" 3 0 0 \": ĠhashCode Ġ= Ġ${ " 3 0 0 ". hashCode () }") ĊĠĠĠ Ġprintln (" 2 0 0 . toString (): ĠhashCode Ġ= Ġ${ 2 0 0 . toString (). hashCode () }") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" Ġ=== Ġ\" 2 0 0 \": Ġ${ " 2 0 0 " Ġ=== Ġ" 2 0 0 "} ") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" Ġ!== Ġ\" 2 0 0 \": Ġ${ " 2 0 0 " Ġ!== Ġ" 2 0 0 "} ") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" Ġ=== Ġ\" 3 0 0 \": Ġ${ " 2 0 0 " Ġ=== Ġ" 3 0 0 "} ") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" Ġ!== Ġ\" 3 0 0 \": Ġ${ " 2 0 0 " Ġ!== Ġ" 3 0 0 "} ") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" Ġ=== Ġ 2 0 0 . toString (): Ġ${ " 2 0 0 " Ġ=== Ġ 2 0 0 . toString () }") ĊĠĠĠ Ġprintln ("\" 2 0 0 \" Ġ!== Ġ 2 0 0 . toString (): Ġ${ " 2 0 0 " Ġ!== Ġ 2 0 0 . toString () }") Ċ } Ċ Ċ fun Ġrefer ential Equals Person () Ġ{ ĊĠĠĠ Ġval Ġd ou g Ġ= ĠPerson (" D avis ", Ġ" D ou glas ") ĊĠĠĠ Ġval Ġd ou g Clone Ġ= ĠPerson (" D avis ", Ġ" D ou glas ") ĊĠĠĠ Ġval Ġsame D ou g Ġ= Ġd ou g ĊĊĠĠĠ Ġprintln (" ******** ** Ġrefer ential Equals Person () Ġ********* * ") ĊĠĠĠ Ġprintln (" D ou g : Ġ$ dou g , ĠhashCode Ġ= Ġ${ dou g . hashCode () }") ĊĠĠĠ Ġprintln (" D ou g 's Ġclone : Ġ$ dou g Clone , ĠhashCode Ġ= Ġ${ dou g Clone . hashCode () }") ĊĠĠĠ Ġprintln (" another Person : Ġ$ same D ou g , ĠhashCode Ġ= Ġ${ same D ou g . hashCode () }") ĊĠĠĠ Ġprintln (" dou g Ġ=== Ġd ou g Clone : Ġ${ dou g Ġ=== Ġd ou g Clone }") ĊĠĠĠ Ġprintln (" dou g Ġ!== Ġd ou g Clone : Ġ${ dou g Ġ!== Ġd ou g Clone }") ĊĠĠĠ Ġprintln (" dou g Ġ=== Ġsame D ou g : Ġ${ dou g Ġ=== Ġsame D ou g }") ĊĠĠĠ Ġprintln (" dou g Ġ!== Ġsame D ou g : Ġ${ dou g Ġ!== Ġsame D ou g }") Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġ// Ġ. equals () ĊĠĠĠ Ġequals Number () ĊĠĠĠ Ġequals Numeric String () ĊĠĠĠ Ġequals Person () ĊĠĠĠ Ġ// Ġ== ĊĠĠĠ Ġstructural Equals Number () ĊĠĠĠ Ġstructural Equals Numeric String () ĊĠĠĠ Ġstructural Equals Person () ĊĠĠĠ Ġ// Ġ=== ĊĠĠĠ Ġrefer ential Equals Number () ĊĠĠĠ Ġrefer ential Equals Numeric String () ĊĠĠĠ Ġrefer ential Equals Person () Ċ } ĊĊ