learning java
Duane Morin
dmorin at lear.morinfamily.com
Thu Apr 29 14:21:47 EDT 2004
On Thu, 29 Apr 2004, Mark J. Dulcey wrote:
> In the first example, I assume that what you're getting at is that you
> should change the value of the Integer objects in the hashmap rather
> than creating new ones. It's not an issue in C, because your hash table
> would contain ints (primitive types) rather than objects.
Yup. Like I said, though, it's a poking stick. *Why* does somebody make
the mistake -- do they blow right past it and not even stop to think about
it? Do they pause and say something like "I'm not sure if C and Java do
this the same way....?" When somebody is sitting in front of me claiming
years of Java experience and with all the confidence in the world writes
down something like:
Integer i = map.get(foo);
i++;
then we have a problem. I will likely say "That won't work in Java" as a
hint, maybe shake off the C++ cobwebs. After they figure out why that is
bad, we then go on to the bigger question of whether they can figure out
how to make a mutable Integer.
> > It's also symptomatic of a failing of the current state of computer
> education; nobody teaches anything about low-level efficiency issues any
> more. I don't think a typical CS101 or CS102 class (which is taught in
> Java at most schools now) would ever mention the issue in your example.
Well, there's two -- there's te whole objects vs primitives thing, which I
think is just core Java skills. ( I do regularly get people who tell me
that with Java1.5, 'boxing' will fix some of that problem. ) But yeah,
the optimization is the harder part of the question. It's nice if they
recognize that they might not have to create a few million objects if they
don't have to, even if they don't know how to avoid it. Just because
we're talking about questions that involve writing code doesn't mean that
the answer is as easy as running the code through a compiler.
> The second example is nearly correct C++ (except that the Java syntax
> for finding the length of the array has been used); it would also work
> in C if boolean and false have been defined somewhere, as they often
> are. In Java, of course, you have to use new to create arrays, and you
> don't have to bother initializing them to false because Java already
> does it for you.
Exactly. And, again, not a question on which to base the final decision.
But I gotta say, somebody doesn't declare an array properly and i'm gonna
ask "When's the last time you wrote Java code?" Just how basic of a
syntax question am I allowed to ask these people? Make the questions too
basic and I'm told that they're so trivial that people shouldn't be judged
on them. Make them too complex and it's not fair because they're not
given adequate time to think abut the answer. Make them too esoteric and
I get the google defense.
Duane
More information about the Discuss
mailing list