/**
@author Larry Battle
@date April 19, 2012
@purpose To show a simple comparison between == and equals().
*/
public class SameObjectTest {
public static boolean areAssertsEnabled(){
boolean isEnabled = false;
try{
assert false: "Yes asserts are enabled.";
}catch( AssertionError e ){
isEnabled = true;
}
return isEnabled;
}
public static void main(String[] args ){
// All asserts should be without an error.
String message = "Test Completed with no errors.";
int[] ints = new int[]{ 10, 10, 20 };
String[] strings = new String[]{ new String( "Duck" ), new String( "Duck" ), new String( "Goose!" ) };
Worker[] workers = new Worker[]{ new Worker( "Working" ), new Worker( "Working" ), new Worker( "Sleeping" ) };
assert ints[0] == ints[1] : "10 is 10";
assert ints[1] != ints[2] : "10 is not 20";
// Primative data types can't use ints[i].equals( ints[j] ) because they don't have methods.
// Strings are a little bit more tricky. Go here for more inforamtion. http://www.janeg.ca/scjp/lang/strLiteral.html
assert strings[0] == strings[0]: "An equality check, ==, on objects compares the references, not the values.";
assert strings[0] != strings[1]: "strings[0] and strings[1] do not have the same reference point. In otherwords, that don't have the same Class and hashCodes.";
assert strings[0].equals( strings[1] ): "String equals methods is predefined to compare the value of the string objects.";
assert !strings[0].equals( strings[2] ): "the string duck should not equal the string goose!";
// You have to override the equals methods for user-defined objects.
assert workers[0] != workers[1]: "workers[0] and workers[1] have two different hash values.";
assert workers[0].equals( workers[1] ): "However workers[0] and workers[1] are equivalent to eachother, according to the equals method.";
assert !workers[1].equals( workers[2] ): "But this is not the case for workers[1] and workers[2].";
message = ( areAssertsEnabled() ) ? message : "Asserts are disabled! Please enable with the switch -ea, ex. java -ea ";
System.out.println( message );
}
}
class Worker{
public String status;
public Worker( String status ){
this.status = ( status != null ) ? status : "Unknown";
}
public boolean equals( Object obj ){
boolean areSame = false;
Worker x;
if( obj != null ){
if( obj == this ){
areSame = true;
}
if( this.getClass() == obj.getClass() ){
x = (Worker) obj;
if( x != null && x.status.equals( this.status ) ){
areSame = true;
}
}
}
return areSame;
}
}
What REALLY is Data Science? Told by a Data Scientist - By Joma Tech
Writing perfect code is a challenging process. That's where code reviews come in to help…
"The Next Leap: How A.I. will change the 3D industry - Andrew Price - Blender"
"Captain Disillusion: World's Greatest Blenderer - Live at the Blender Conference 2018 - CaptainDisillusion"
My 5 Favorite Linux Shell Tricks for SPEEEEEED (and efficiency) - By tutoriaLinux > What's…