Last week, we had the author of TDD for a Shopping Website LiveProject. Friday at 11am Ranch time, Steven Solomon will be hosting a live TDD session just for us. See for the agenda and registration link

Karen Leoh

Ranch Hand
+ Follow
since Dec 03, 2001
Cows and Likes
Total received
In last 30 days
Total given
Total received
Received in last 30 days
Total given
Given in last 30 days
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Karen Leoh

I passed the exam with 83% on Sat. I want to take this opportunity to thank all the java ranchers here.. especially Valentin, Rob, Clement, Corey and Jessica. All of you have help a lot.
Although I don't post a lot.. but I really benefit a lot from this site... I am now totally addicted to this site.
I am now considering Web developer.. will be hanging around here....won't budge at all!!!
19 years ago
I just want to confirm whether the following statement is true or false
Constructors can throw exceptions. If parent default constructor throw exception, subclass have to do the same or have to handle the exeption.
Hi Francisco,
I check the link you provided but didn't read anything about the exam being release in July. I guess I miss out. Hope you help me out.
I'm also planing to take the exam in 2-3 weeks time. Needless to say,I'm worried just like you. But I think we should just go ahead. Any advice ranchers??
[ June 18, 2002: Message edited by: Karen Leoh ]
Congratulations Kumar !
19 years ago
Here's the objectives

1. Section Title: Declarations and Access Control
1.1 Write code that declares, constructs and initializes arrays of any base type using any of the permitted
forms both for declaration and for initialization.
1.2 Declare classes, nested classes, methods, instance variables, static variables and automatic (method
local) variables making appropriate use of all permitted modifiers (such as public, final, static, abstract,
etc.). State the significance of each of these modifiers both singly and in combination and state the effect
of package relationships on declared items qualified by these modifiers.
1.3 For a given class, determine if a default constructor will be created and if so state the prototype of that
1.4 Identify legal return types for any method given the declarations of all related methods in this or parent
2. Section Title: Flow Control, Assertions, and Exception Handling
2.1 Write code using if and switch statements and identify legal argument types for these statements
2.2 Write code using all forms of loops including labeled and unlabeled, use of break and continue, and state
the values taken by loop counter variables during and after loop execution.
2.3 Write code that makes proper use of exceptions and exception handling clauses (try, catch, finally) and
declares methods and overriding methods that throw exceptions.
2.4 Recognize the effect of an exception arising at a specified point in a code fragment. Note: The
exception may be a runtime exception, a checked exception, or an error (the code may include try, catch,
or finally clauses in any legitimate combination).
2.5 Write code that makes proper use of assertions, and distinguish appropriate from inappropriate uses of
2.6 Identify correct statements about the assertion mechanism.
3. Section Title: Garbage Collection
3.1 State the behavior that is guaranteed by the garbage collection system.
3.2 Write code that explicitly makes objects eligible for garbage collection.
3.3 Recognize the point in a piece of source code at which an object becomes eligible for garbage collection.
4. Section Title: Language Fundamentals
4.1 Identify correctly constructed package declarations, import statements, class declarations (of all forms
including inner classes) interface declarations, method declarations (including the main method that is
used to start execution of a class), variable declarations, and identifiers.
4.2 Identify classes that correctly implement an interface where that interface is either java.lang.Runnable or
a fully specified interface in the question.
4.3 State the correspondence between index values in the argument array passed to a main method and
command line arguments.
4.4 Identify all Java programming language keywords. Note: There will not be any questions regarding
esoteric distinctions between keywords and manifest constants.
4.5 State the effect of using a variable or array element of any kind when no explicit assignment has been
made to it.
4.6 State the range of all primitive formats, data types and declare literal values for String and all primitive
types using all permitted formats bases and representations.
5. Section Title: Operators and Assignments
5.1 Determine the result of applying any operator (including assignment operators and instance of) to
operands of any type class scope or accessibility or any combination of these.
5.2 Determine the result of applying the boolean equals (Object) method to objects of any combination of
the classes java.lang.String, java.lang.Boolean and java.lang.Object.
5.3 In an expression involving the operators &, |, &&, || and variables of known values state which operands
are evaluated and the value of the expression.
5.4 Determine the effect upon objects and primitive values of passing variables into methods and performing
assignments or other modifying operations in that method.
6. Section Title: Overloading, Overriding, Runtime Type and Object Orientation
6.1 State the benefits of encapsulation in object oriented design and write code that implements tightly
encapsulated classes and the relationships "is a" and "has a".
6.2 Write code to invoke overridden or overloaded methods and parental or overloaded constructors; and
describe the effect of invoking these methods.
6.3 Write code to construct instances of any concrete class including normal top level classes and nested
7. Section Title: Threads
7.1 Write code to define, instantiate and start new threads using both java.lang.Thread and
7.2 Recognize conditions that might prevent a thread from executing.
7.3 Write code using synchronized wait, notify and notifyAll to protect against concurrent access problems
and to communicate between threads.
7.4 Define the interaction among threads and object locks when executing synchronized wait, notify or
8. Section Title: Fundamental Classes in the java.lang package
8.1 Write code using the following methods of the java.lang.Math class: abs, ceil, floor, max, min, random,
round, sin, cos, tan, sqrt.
8.2 Describe the significance of the immutability of String objects.
8.3 Describe the significance of wrapper classes, including making making appropriate selections in the
wrapper classes to suit specified behavior requirements, stating the result of executing a fragment of code
that includes an instance of one of the wrapper classes, and writing code using the following methods of
the wrapper classes (e.g., Integer, Double, etc.):
� doubleValue
� floatValue
� intValue
� longValue
� parseXxx
� getXxx
� toString
� toHexString
9. Section Title: The Collections Framework
9.1 Make appropriate selection of collection classes/interfaces to suit specified behavior requirements.
9.2 Distinguish between correct and incorrect implementations of hashcode methods.

[ June 14, 2002: Message edited by: Karen Leoh ]
Hi Charles,
Congratulations!!! Good score! Yes, you did it. Perseverance pays off
19 years ago
Hi Jamal,
I did try out some samples. I know the example you given compile fine. But want I am dubious over is the usage of the word and in answer B.
I think it's not true that to overload a method we have to differ in return type as return type is not part of a signature.
Examples shown below compile fine too and it's a valid form of overloading.
int MyMethod(int a){return 0;}
int MyMethod(String b){return 0;}
That's the reason why I post the question becuase I want to know the best answer.
Hi there
I have so doubts about the following question
When can we use same method name in java for two different methods
A. If the two methods are in two unrelated classes.
B. If the two methods are in the same class and they differ in argument & return type.
C. If one method is in base class, other is in its subclass and the two methods differ only in return type.
D. If one method is in base class, other is in its sub class and the two methods differ both arguments list and in return type.
The answer given is A, B and D.
IMHO, when we want to use same method name for two methods it means we want to do overloading. According to my knowledge return type is not part of a method signature. Thus it is not taken account when a method is overload.
As such, statement B is not entirely correct becuase it is possible to differ in argument type only. Am I right?? Are A and D the best answer for this question.
Thanks a lot.
Just to clarify again. Thus, the correct answer for the question is B,C, D, and E.
B and E are correct because specifying non-checked exceptions in your throws clause is allowed although not required.
Correct me if I'm wrong. Thanks a lot.
19 years ago
They will be moving this too the "results" forum soon..
19 years ago
Congratulations Robi
All the best in your next certification.
19 years ago
Hey Jose
Thanks a lot for your explanation. I understand it already.
Hi there..
I hope this helps. When you initialise "str=str", it is done locally. The instance variable is str is still null.
Correct me if I'm wrong.

public class Test026
static Test026 t = new Test026();
String str; //this is initialised to null
public static void main(String args[]) {
Test026 t = new Test026();
void method(String str) {
str = str;
System.out.println(t.str); //this called the instance variable str which is null
System.out.println(this.str); //this also call the instance variable str

Hey Joy
Congratulations!! Well done!!! Great score!!
19 years ago
Hi Murthy
String a = new String("java") creates a String object. System.out.println(a == b) is false as it does shallow comparison. It compares Objects instead of the content of the object.
The method equals() does deep comparison. It compares the content of the String. Thus,
System.out.println(a.equals(b)) prints true.
As for
String c = "java";
String d = "java";
since there's no "new" used, it does not create a new object instead is pointing to the same string in the string pool. Since it's the same string, == will return true.
I hope this brief explanation helps a bit. You should do a search here. This topic has been discussed a lot here. I'm sure the explanations provided by the other ranchers are much better.