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 -~----------~----~----~----~------~----~------~--~---
