Wednesday, 9 September 2009

Java Certification Question 0090

What will happen when you attempt to compile and run the following code

public class StrEq{

public static void main(String argv[]){
StrEq s = new StrEq();
}

private StrEq(){
String s = "Marcus";
String s2 = new String("Marcus");
if(s == s2){
System.out.println("we have a match");
}else{
System.out.println("Not equal");
}
}
}

1) Compile time error caused by private constructor
2) Output of "we have a match"
3) Output of "Not equal"
4) Compile time error by attempting to compare strings using ==




Answer)

3) Output of "Not equal"

Despite the actual character strings matching, using the == operator will simply compare memory location. Because the one string was created with the new operator it will be in a different location in memory to the other string.

No comments: