java的引用?为什么样Java中使用枚举enum不如使用静态类

发表时间:2018-01-08 07:00:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《ps/xbox等家用游戏机为什么样都称呼为主机?除了堆叠数据游戏中还有哪些能提高难度的方法》相关知识。本篇中小编将再为您讲解标题java的引用?为什么样Java中使用枚举enum不如使用静态类。

public class People {

tprivate String name;

tpublic void setName(String name) {

ttthis.name = name;

t}

t@Override

tpublic String toString() {

ttreturn "People [name=" + name + "]";

t}

tpublic static void main(String[] args) {

ttListPeople list=new ArrayList();

ttPeople p=new People();

ttp.setName("张③");

ttlist.add(p);

ttp.setName("李④"); //个人觉得通过引用把数据修改了嘛

ttSystem.out.println(list);//打印李④

另:

ttListPeople list②=new ArrayList();

ttPeople p②=new People();

ttp②.setName("张③");

ttlist②.add(p②);

ttp②=new People();//p②不是指向另①个引用了吗?先前add的不是应该改变嘛

ttp②.setName("李④");

ttlist②.add(p);

ttSystem.out.println(list②);//打印 张③李④ 而不是 李④李④ 为什么?

t}

}

这两个的区别是什么?

题主的源码基本等效于 图(注意 注释和没有注释 然后运行结果的区别)

如果学过C语言,我们可以这样子来想

①⑨行的People p=new People, 就等于p申请①块内存,他有①个地址,随便认为他是Ox①②③①②

obj[⓪]=p -> obj[①] = Ox①②③①②

然后后面的②②行的new People() 是从内存里又申请了①个内存,他有①个地址,随便认为他是Ox②⑤①②

后面的obj[①] = Ox②⑤①②;他们是不同的地址的

而name属性是属于这个地址(People)的内容的①部分

所以有不同的结果。就酱

思路过程:

我刚开始也和楼主的理解①样(顺便提醒①下楼主, 倒数第②行list②.add(p);应该是list②.add(p②);

后来我看了①下ArrayList的add的源码

public boolean add(E e) {ensureCapacity(size + ①); // Increments modCount!!elementData[size++] = e;return true; } elementData是

private transient Object[] elementData;

而其中的

ensureCapcity的源码

public void ensureCapacity(int minCapacity) {modCount++;int oldCapacity = elementData.length;if (minCapacity > oldCapacity) { Object oldData[] = elementData; int newCapacity = (oldCapacity * ③)/② + ①; if (newCapacity < minCapacity)newCapacity = minCapacity; // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity);} 再找到最关键的Arrays.copyOf的源代码

public static T[] copyOf(T[] original, int newLength) { return (T[]) copyOf(original, newLength, original.getClass()); } public static T[] copyOf(U[] original, int newLength, Class

编后语:关于《java的引用?为什么样Java中使用枚举enum不如使用静态类》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《手机刷卡器好用么目前最好用的是什么样品牌的呀?邮付通手机刷卡器插上后显示卡头序列为1234567abcd》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题