| public class Autoboxing { |
| Byte b; |
| Short s; |
| Short sInterned; |
| Integer i; |
| Integer iInterned; |
| Long l; |
| Float f; |
| Double d; |
| Boolean z; |
| Character c; |
| Character cInterned; |
| |
| Autoboxing() { |
| b = -126; |
| s = 32000; |
| sInterned = 32; |
| i = 1234567; |
| iInterned = 123; |
| l = 1234567L; |
| f = 3.14f; |
| d = 3.14; |
| z = true; |
| c = 65000; |
| cInterned = 65; |
| } |
| |
| public static void main(String[] args) { |
| new Autoboxing().test(); |
| } |
| |
| public void test() { |
| System.out.println(); |
| System.out.println("Byte"); |
| Byte b1 = -126; |
| Byte b2 = -126; |
| Byte b3 = Byte.valueOf((byte) -126); |
| System.out.println(b1 == b2); |
| // :: warning: (unnecessary.equals) |
| System.out.println(b1.equals(b2)); |
| // :: warning: (unnecessary.equals) |
| System.out.println(b3.equals(b2)); |
| System.out.println(b.equals(b2)); |
| System.out.println(b == -126); |
| // :: warning: (unnecessary.equals) |
| System.out.println(b1.equals(126)); |
| |
| System.out.println(); |
| System.out.println("Short"); |
| Short s1 = 32000; |
| Short s2 = 32000; |
| Short s3 = Short.valueOf((short) 32000); |
| // :: error: (not.interned) |
| System.out.println(s1 == s2); |
| System.out.println(s1.equals(s2)); |
| System.out.println(s3.equals(s2)); |
| System.out.println(s.equals(s2)); |
| // TODO |
| // Short s1interned = 32; |
| // Short s2interned = 32; |
| // Short s3interned = Short.valueOf((short) 32); |
| // System.out.println(s1interned==s2interned); |
| // // :: warning: (unnecessary.equals) |
| // System.out.println(s1interned.equals(s2interned)); |
| // // :: warning: (unnecessary.equals) |
| // System.out.println(s3interned.equals(s2interned)); |
| // // :: warning: (unnecessary.equals) |
| // System.out.println(sInterned.equals(s2interned)); |
| |
| System.out.println(); |
| System.out.println("Integer"); |
| Integer i1 = 1234567; |
| Integer i2 = 1234567; |
| Integer i3 = Integer.valueOf(1234567); |
| // :: error: (not.interned) |
| System.out.println(i1 == i2); |
| System.out.println(i1.equals(i2)); |
| System.out.println(i3.equals(i2)); |
| System.out.println(i.equals(i2)); |
| |
| System.out.println(); |
| Integer i1interned = 123; |
| Integer i2interned = 123; |
| Integer i3interned = Integer.valueOf(123); |
| // TODO: |
| // Would be legal to use ==, but Interning Checker does not check the |
| // actual int value when deciding whether to warn for unnecessary.equals. |
| // // :: warning: (unnecessary.equals) |
| // System.out.println(i1interned==i2interned); |
| // // :: warning: (unnecessary.equals) |
| // System.out.println(i1interned.equals(i2interned)); |
| // // :: warning: (unnecessary.equals) |
| // System.out.println(i3interned.equals(i2interned)); |
| // // :: warning: (unnecessary.equals) |
| // System.out.println(iInterned.equals(i2interned)); |
| // System.out.println(i1interned==123); // ok |
| // // :: warning: (unnecessary.equals) |
| // System.out.println(i1interned.equals(123)); |
| |
| System.out.println(); |
| System.out.println("Long"); |
| Long l1 = 1234567L; |
| Long l2 = 1234567L; |
| Long l3 = Long.valueOf(1234567L); |
| // :: error: (not.interned) |
| System.out.println(l1 == l2); |
| System.out.println(l1.equals(l2)); |
| System.out.println(l3.equals(l2)); |
| System.out.println(l.equals(l2)); |
| |
| System.out.println(); |
| System.out.println("Float"); |
| Float f1 = 3.14f; |
| Float f2 = 3.14f; |
| Float f3 = Float.valueOf(3.14f); |
| // :: error: (not.interned) |
| System.out.println(f1 == f2); |
| System.out.println(f1.equals(f2)); |
| System.out.println(f3.equals(f2)); |
| System.out.println(f.equals(f2)); |
| |
| System.out.println(); |
| System.out.println("Double"); |
| Double d1 = 3.14; |
| Double d2 = 3.14; |
| Double d3 = Double.valueOf(3.14); |
| // :: error: (not.interned) |
| System.out.println(d1 == d2); |
| System.out.println(d1.equals(d2)); |
| System.out.println(d3.equals(d2)); |
| System.out.println(d.equals(d2)); |
| |
| System.out.println(); |
| System.out.println("Boolean"); |
| Boolean z1 = true; |
| Boolean z2 = true; |
| Boolean z3 = Boolean.valueOf(true); |
| System.out.println(z1 == z2); |
| // :: warning: (unnecessary.equals) |
| System.out.println(z1.equals(z2)); |
| // :: warning: (unnecessary.equals) |
| System.out.println(z3.equals(z2)); |
| System.out.println(z.equals(z2)); |
| System.out.println(z1 == true); // ok |
| // :: warning: (unnecessary.equals) |
| System.out.println(z1.equals(true)); |
| |
| System.out.println(); |
| System.out.println("Character"); |
| Character c1 = 65000; |
| Character c2 = 65000; |
| Character c3 = Character.valueOf((char) 65000); |
| // :: error: (not.interned) |
| System.out.println(c1 == c2); |
| System.out.println(c1.equals(c2)); |
| System.out.println(c3.equals(c2)); |
| System.out.println(c.equals(c2)); |
| // TODO |
| // Character c1interned = 65; |
| // Character c2interned = 65; |
| // Character c3interned = Character.valueOf((char) 65); |
| // System.out.println(c1interned==c2interned); |
| // // :: warning: (unnecessary.equals) |
| // System.out.println(c1interned.equals(c2interned)); |
| // // :: warning: (unnecessary.equals) |
| // System.out.println(c3interned.equals(c2interned)); |
| // // :: warning: (unnecessary.equals) |
| // System.out.println(cInterned.equals(c2interned)); |
| } |
| } |