Hi Rita,

I believe all the wrapper classes are immutable too. If you look at the
JavaDoc for the Integer class you can see that the class is final. So it is
immutable.

public final class *Integer*extends Number
<file:///usr/lib/jvm/java-6-sun-1.6.0.14/docs/api/java/lang/Number.html>implements
Comparable 
<file:///usr/lib/jvm/java-6-sun-1.6.0.14/docs/api/java/lang/Comparable.html><Integer
<file:///usr/lib/jvm/java-6-sun-1.6.0.14/docs/api/java/lang/Integer.html>>

Regards,
Babu


On Thu, Jul 30, 2009 at 8:26 PM, RPGoldie <[email protected]> wrote:

>
> Hi all,
>
> I encountered a problem when working with Integer objects which I
> would like to be discussed. Let me first show you my class:
>
> 001 public class Test {
> 002
> 003     int memberVar;
> 004
> 005     public static void main(String[] args) {
> 006
> 007         // Example 1
> 008         Test t1 = new Test();
> 009         t1.memberVar = 7;
> 010         Test t2 = new Test();
> 011         t2 = t1;
> 012
> 013         System.out.println(t1 == t2);
> 014
> 015         t2.memberVar = 55;
> 016         System.out.println(t1.memberVar);
> 017         System.out.println(t1 == t2);
> 018         System.out.println();
> 019
> 020         // Example 2
> 021         Integer i1 = new Integer(1);
> 022         Integer i2 = i1;
> 023         System.out.println(i1 + ", " + i2);
> 024         System.out.println(i1 == i2);
> 025
> 026         i2 = 5;
> 027         System.out.println(i1 + ", " + i2);
> 028         System.out.println(i1 == i2);
> 029         System.out.println();
> 030
> 031         // Example 3
> 032         String s1 = "Hello!";
> 033         String s2 = s1;
> 034         System.out.println(s1 + ", " + s2);
> 035         System.out.println(s1 == s2);
> 036
> 037         s2 = "Bye!";
> 038         System.out.println(s1 + ", " + s2);
> 039         System.out.println(s1 == s2);
> 040
> 041     }
> 042 }
>
> Example 1: I create 2 objects t1 and t2 of class Test. In line 011 t1
> is assigned to t2. Now t2 points to the same reference as t1, so line
> 013 returns true. Now in line 015 I change the property of t2 to 55.
> Because it is the same object as t1, line 016 gives 55. This is what I
> expect objects to do.
>
> Example 2: The same matter but now with wrapper class Integer. In line
> 023 both i1 and i2 have the same contents of 1. Line 024 gives true,
> so they are pointing to the same reference. Ok. In line 026 I change
> object i2 to 5 and expect i1 to change also, because it is the same
> object! But it doesn't, line 027 gives 1 and 5, line 028 gives false!
> Is this a typical behaviour of wrapper classes or why doesn't it
> work???
>
> Example 3: same with Strings. It behaves like the Integers in example
> 2.
> I guess this is because strings are immutable. So in line 037 there is
> in fact created a new object of type String with contents "Bye!" and
> s1/s2 are no longer the same object. Ok.
>
> But why does the wrapper class not do what I'm expecting???
>
> I'm looking forward to your ideas.
> Rita
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/javaprogrammingwithpassion?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to