java对象内存的有关问题

java对象内存的问题
import java.text.*;
import java.util.*;

class A {
    private int a;
 
    public A(int a) {
        this.a = a;
    }
    public int getA(){
        return this.a;
    }
};
 
public class Test03 {
    public static void main(String args[]) {
    
        A aa = null;
        for (int i = 1; i <= 10; i++) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            aa = new A(i);
            System.out.println("aa的内存地址:"+aa);
            System.out.println("sdf的内存地址:"+sdf);
        }
        System.gc();
    }
}

输出结果:

aa的内存地址:A@a62fc3
sdf的内存地址:java.text.SimpleDateFormat@4f76f1a0
aa的内存地址:A@89ae9e
sdf的内存地址:java.text.SimpleDateFormat@4f76f1a0
aa的内存地址:A@1270b73
sdf的内存地址:java.text.SimpleDateFormat@4f76f1a0
以下省略


我想问一下,我知道AA类的a对象创建了10个对象,对象地址都不一样。
 但是为什么SimpleDateFormat  sdf的对象地址都是一样的。是否只创建了1个对象呢??
------解决思路----------------------
SimpleDateFoemat中hashCode的源码:
 public int hashCode()
    {
        return pattern.hashCode();
        // just enough fields for a reasonable distribution
    }

其中pattern就是你这里的"yyyy-MM-dd HH:mm:ss",而且这个类没有重写toString()方法。所以只要采用同一个pattern,输出结果就是一样的。
------解决思路----------------------
都是多个对象,不同的是aa 是只有一个变量,每次指向不同的内存地址引用
sdf 是每次新建的局部变量,指向自己new 返回的内存地址引用
aa 变量只有一个,sdf 变量有多个