2021-11-12关于我用java实现链表的困难

"本文探讨了Java中等号(=)的作用,指出它用于赋值引用而非创建新对象。通过例子解释了字符串Strings="Helloworld!"实际上是创建了一个引用s指向一个String对象。接着讨论了链表节点插入的问题,说明直接设置新节点的next属性为旧节点并不适用于插入链表首部,而在插入链表中间时需要正确处理节点引用。文章强调理解引用和对象的区别对于避免错误至关重要。"
摘要由CSDN通过智能技术生成

项目场景:

关于java里面 等号= 到底是一个什么作用 。今天碰到了就简单的总结一下

问题描述:

String s = “Hello world!”;
在java里面 我们是先声明了一个引用 这个引用指向的是一个string类型的对象 那么我现在有了第二个s–》s2
这个string s2 =s 这我们又该如何理解呢 这个s2 是一个引用 指向了s 而这个s 也是引用 指向了一个字符串
那么 如果我现在来更改这个s2 他会是怎么去操作呢 他会先更改自己的引用 s s再更改自己的引用 string对象
这样 如果我们更改s 或者s2都会导致两个都被更改

回到我的问题 在java里面 我有一个模拟的链表 里面有一个节点 节点的成员包括了下一个节点 还有数据 那么 我现在来一个新的节点 进行插入到首部 我直接把这个新节点的next=node 能成功吗?
看一下这个数据会怎么操作 Node newNode
newNode,next=Node;
能成功
那么我如果插入到中间呢?
newnode=node.next
node.next=newnode.next
很明显不能
node.next是nextnode newnode=node.next就意味着nextnode被赋值给了newnode
要明确 声明只是一个引用 具体引用的就是内存里面的对象 对声明的更改最后都会落实到内存里面的对象 所以要明确更改到底改的是什么。

附上百度解答

问题1
我声明了什么!
String s = “Hello world!”;
许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:
String string = s;
我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。

我的理解:字符串的底层真实实现,还是和C一样,用的数组来存储多个char类型的字符,所以可以理解成声明一个数组,因为数组是多个内存地址的集合,你想想,那么多地址,如果是直接赋值,该存哪个地址哇?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值