Search This Blog

Wednesday, December 14, 2005

What are the potential trips/traps in SCJP exam?

Answer: Provided by Ajith Kallambella (From Java Ranch: http://www.javaranch.com)
• Two public classes in the same file.
• Main method calling a non-static method.
• Methods with the same name as the constructor(s).
• Thread initiation with classes that dont have a run() method.
• Local inner classes trying to access non-final vars.
• Case statements with values out of permissible range.
• Math class being an option for immutable classes !!
• instanceOf is not same as instanceof
• Private constructors
• An assignment statement which looks like a comparison if ( a=true)...
• System.exit() in try-catch-finally blocks.
• Uninitialized variable references with no path of proper initialization.
• Order of try-catch-finally blocks matters.
• main() can be declared final.
• -0.0 == 0.0 is true.
• A class without abstract methods can still be declared abstract.
• RandomAccessFile descends from Object and implements DataInput and DataOutput.
• Map doesnot implement Collection.
• Dictionary is a class, not an interface.
• Collection is an Interface where as Collections is a helper class.
• Class declarations can come in any order ( derived first, base next etc. ).
• Forward references to variables gives compiler error.
• Multi dimensional arrays can be sparce ie., if you imagine the array as a matrix, every row need not have the same number of columns.
• Arrays, whether local or class-level, are always initialized,
• Strings are initialized to null, not empty string.
• An empty string is NOT the same as a null string.
• A declaration cannot be labelled.
• continue must be in a loop( for, do , while ). It cannot appear in case constructs.
• Primitive array types can never be assigned to each other, eventhough the primitives themselves can be assigned. ie., ArrayofLongPrimitives = ArrayofIntegerPrimitives gives compiler error eventhough longvar = intvar is perfectly valid.
• A constructor can throw any exception.
• Initilializer blocks are executed in the order of declaration.
• Instance initializer(s) gets executed ONLY IF the objects are constructed.
• All comparisons involving NaN and a non-Nan would always result false.
• Default type of a numeric literal with a decimal point is double.
• integer (and long ) operations / and % can throw ArithmeticException while float / and % will never, even in case of division by zero.
• == gives compiler error if the operands are cast-incompatible.
• You can never cast objects of sibling classes( sharing the same parent ), even with an explicit cast.
• .equals returns false if the object types are different.It does not raise a compiler error.
• No inner class can have a static member.
• File class has NO methods to deal with the contents of the file.
• InputStream and OutputStream are abstract classes, while DataInput and DataOutput are interfaces.

No comments: