Java 分配新对象是否会自动销毁以前分配给同一数据成员的对象?

Java 分配新对象是否会自动销毁以前分配给同一数据成员的对象?,java,android,garbage-collection,Java,Android,Garbage Collection,考虑到以下两种情况,请帮我一劳永逸地澄清我头脑中的疑问 案例1: public class Activity { WebView mWebview; @Override public void onCreate(Bundle savedInstanceState) { initWebView(); } public void initWebView() { mWebView = (WebView) findViewById(R.id.webview);

考虑到以下两种情况,请帮我一劳永逸地澄清我头脑中的疑问

案例1:

public class Activity {
  WebView mWebview;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    initWebView();
  }

  public void initWebView() {
    mWebView = (WebView) findViewById(R.id.webview);
  }

}
  • findViewById()
    是否实例化 新建
    WebView
    对象秒时间 它叫什么
  • 如果答案是“是”,那是旧的吗
    WebView
    对象(以前是 自动分配给
    mWebView
    ) 摧毁?(即,由于 放入垃圾队列中 收藏)
  • 案例2:

    public class Activity {
      WebView mWebview;
      MyPictureListener mPictureListener;
    
      @Override
      public void onCreate(Bundle savedInstanceState) {
        initWebView();
      }
    
      public void initWebView() {
        mWebView = (WebView) findViewById(R.id.webview);
        mPictureListener = new MyPictureListener(mWebView);
        mWebView.setPictureListener(mPictureListener);
      }
    
    }
    
  • 当调用
    initWebView()
    时 第二次,是旧的
    MyPictureListener
    对象(即 以前分配给
    mPictureListener
    )自动 摧毁?(即,由于 放入垃圾队列中 收藏)

  • 案例1:无论调用多少次
    findViewById(R.id.webview)
    ,返回的对象都是UI框架膨胀布局时创建的同一个webview。当你把它赋给你的变量时,你只是说“我想要一个对象的句柄”,这就是全部。如果将
    mWebView
    设置为
    null
    ,则该对象仍然存在,并且从活动的UI中引用了该对象,您只是无法再从
    mWebView
    访问它

    案例2:是(只要“自动销毁”在Java中起作用)。您的
    mWebView
    有一个指向
    MyPictureListener
    对象的句柄(指针),当您将其分配给该类的新实例时,对旧对象的引用将丢失,旧对象现在是垃圾收集的候选对象


    这实际上是对指针如何工作的一个[非常概括的]迷你解释,我听一些人说Java不使用这个概念。这完全是错误的,并且在C++中使用指针变得更加舒服,这将给你更好地洞察这些问题。

    < P> 1:不管你调用了多少次代码< FordVIEWBYID(R.ID.WebVIEW)< /C>返回的对象与UI框架扩展布局时创建的WebView相同。当你把它赋给你的变量时,你只是说“我想要一个对象的句柄”,这就是全部。如果将
    mWebView
    设置为
    null
    ,则该对象仍然存在,并且从活动的UI中引用了该对象,您只是无法再从
    mWebView
    访问它

    案例2:是(只要“自动销毁”在Java中起作用)。您的
    mWebView
    有一个指向
    MyPictureListener
    对象的句柄(指针),当您将其分配给该类的新实例时,对旧对象的引用将丢失,旧对象现在是垃圾收集的候选对象

    这实际上是对指针如何工作的一个[非常概括的]迷你解释,我听一些人说Java不使用这个概念。这完全错误,并且在C++中使用指针变得更舒服,这将给你更好地洞察这些问题。