Data Classes are unique in that they automatically generate some Global Methods. Specifically, toString, equals, and copy all get autogenerated methods. Below is an example
//Here we are demonstrating data classes do not need extra code for the .equals, .copy, and .toString methods
// Pretty prittyyyyy good
data class User(var name:String, var ID: Int)
fun main(args: Array<String>){
val josh = User("Josh", 1)
//Println without ToString gives the values prefixed by parameters (nice)
println(josh)
val Yosemite = User("Sam", 2)
val Becca = User("Becca betch", 3)
//Using copy and specifying which parameter to replace
println(Becca.copy(ID=4))
//Showing that copy is an exact replica if no parameters specified in ".copy"
println(Yosemite)
println(Yosemite.copy())
//Using .equals
println("Becca == Josh? : ${josh==Becca}")
println("Yosemite clones ==? : ${Yosemite==Yosemite.copy()}")
}