public class Example_014 {
class Person{
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// example start
public String toString() {
return new String(name + ":" + age);
}
// fixed code
public String toString2() {
return name + ":" + age;
}
// example end
}
// test start
public static void main(String[] args) {
Example_014 test = new Example_014();
test.time(100000, false); // to warm up jvm
test.time(100000, true);
}
boolean print = false;
private long stamp;
private void time(int n, boolean p) {
print = p;
start();
Person bob = new Person("bob", 18);
for (int i = 0; i < n; i++) {
bob.toString();
}
time("with extra constructor");
for (int i = 0; i < n; i++) {
bob.toString2();
}
time("fixed");
}
private void start() {
stamp = System.currentTimeMillis();
}
private void time(String m) {
long a1 = System.currentTimeMillis() - stamp;
if (print) {
System.out.println(a1 + " ms for " + m);
}
System.gc();
start();
}
{ Show us the error message, please.}