博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java对象与对象引用变量的理解
阅读量:5370 次
发布时间:2019-06-15

本文共 1214 字,大约阅读时间需要 4 分钟。

Java对象及对象引用

  首先定义一个简单的类:

  class User{

    int userId;

    String userName;

  }

  我们在创建对象时,通常会写:

     User user = new User();

  这个操作包含了四个动作。

  1)右边的"new User",是以User为模板,在堆(heap)中创建一个User类对象(也可以说User对象)。

  2)末尾的()意味着,对象创建后,立刻调用User类的构造函数,对刚生成的对象进行初始化。构造函数肯定是有的,如果你没有写,Java会给你补上默认的构造函数。

  3)左边"User user"创建了一个User类引用变量。User类引用就是以后可以用来指向User对象的对象引用。

  3)"="操作符使对象引用指向刚创建的那个User对象。

  为了更好的理解,拆分成两步:

  User user;

  user = new User();

  功能效果是一样的,这样就比较清楚了,有两个实体:一个是对象引用变量,一个是对象本身。

  一般引用是存放在栈(stack),对象存放在堆(heap)

  我们创建对象,为什么还要创建对象引用变量?

  因为创建的User对象是没有名字的,可以认为是User类名称(对象的创建模板)

  所以一个User类可以据此创建无数个对象,且这些对象不能全叫"User"。

  我们不能直接访问,只能通过对象引用来间接访问对象。

  理解到这里,拓展下这里的知识:

  For Example:

  User user_1 = new User();

  User user_2;

  user_2 = user_1;

  这里解释下,user_2没有指向对象,但是发生了复制行为,要说的是,对象没有被复制,被复制的只是对象引用。结果是,user_2也指向了user_1所指向的对象。

  以此类推:

  user_2 = new User();

  则表示user_2引用变量修改指向第二个User对象。

  得出结论:

  1)一个对象引用可以指向一个或多个对象

  2)一个对象可以有N个引用指向它

  再拓展下:

  user_1 = user_2;

  现在user_1也指向了第二个User对象,那么第一个User对象呐?因为没有被使用到,就会被Java垃圾回收处理机制回收了,至于什么时候回收,要看垃圾回收机制的策略或者心情了,就是等待JVM回收。

  以此类推,一些没有引用指向的对象,都会被丢弃,等待JVM回收

  For Example:

  new User();

  System.out.println("Hello World!");

  

转载于:https://www.cnblogs.com/Alan-Jones/p/9089630.html

你可能感兴趣的文章
pandas的增删改查
查看>>
HDU 5933/思维
查看>>
字节对齐
查看>>
Design Tic-Tac Toe
查看>>
SQL中的去重操作
查看>>
uva 12097 - Pie(二分,4级)
查看>>
mongodb索引
查看>>
nginx源码学习资源(不断更新)
查看>>
【bzoj2882】工艺 后缀自动机+STL-map
查看>>
[redis] redis
查看>>
Linux的加密认证功能以及openssl详解
查看>>
[Tools] 使用XP远程登录Win8系统
查看>>
【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
查看>>
HDU- 2265 Encoding The Diary
查看>>
socket基本概念
查看>>
[第三方]SCNetworkReachability 获取网络状态控件使用方法
查看>>
在Windows上使用putty连接一台Linux主机
查看>>
Socket常见错误
查看>>
百度地图2.0API和3.0API。你想要的百度地图的这都有
查看>>
专业词汇
查看>>