1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
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));
}
}
|