From: "Geoff Bull" <[log in to unmask]>
> > a = 1;
> > b = a;
> > a = a+1;
> >
> > what does b equal?
>
> 1
>
> > In Java:
> > if b is the primitive "int", then b=a1
> > if b is the class "Integer" then b = a means in Ada terms b renames a.
For which
> > we can thank C.
>
> But b must have been a primitive, because operators only work for
primitives
> (except for "+" for catenating Strings).
>
> Have I missed something?
Of course you're right. As they say in the classics, DOH!
My example was too simple, I was careless, should have had a = f(a) not a=
a+1.
where the signature of f is not immediately visible (to humans, rather than
the machine).
The problem I was attempting to illustrate is the somewhat counterintuitive
use of
=, where on a Class it's a rename, on a primitive it's an assignment of
value.
Similarly for a==b, where in java you're saying "are a and b just aliases
for the same object"
rather than comparing their internal values. Which is done with a.equals(b),
assuming
that's defined.
Mea Culpa in any event. Thanks for the correction and peer review.
