正在影响我生活的两个想法

我现在22岁,在过去的一年中,有两个思想正在影响我的生活。

 

第一个就是金融,我曾经在寒假的时候,在我的blog里写过,learn hard to make money, not learn hard to get a good job to earn money。这个思想指导我去学习大量统计和金融的知识,但我知道这些只是书本的知识,一旦有机会,我就会投身到金融和商业中去,这是毋庸置疑的。

 

第二个就是健康,在中科院的一年中,为健康而做的努力占了我的大半时间,知道现在,我每天的运动还能维持在一个小时。如果有可能,我将继续扩充运动的形式和时间。同时,我也尽量寻找评价我所做出的努力的方式。

 

但是这两点也让我吃了不少苦头,由于大量运动和对专业知识的不重视,让我的学习成绩下降。

 

有得有失,继续平衡吧。

你的理解非常典型,而且问到了 **Kotlin/Java 引用类型的核心机制**! > ❓“我以为 `list` 只是一个拷贝” —— 这个想法很自然,但其实是误解了对象引用的本质。 --- ### ✅ 正确答案:**`list` 不是拷贝,它只是一个引用(指针)** 在 Kotlin(以及 Java)中: - 所有对象(包括 `ArrayList`、自定义类等)都是 **引用类型** - 当你写: ```kotlin val list = mFloorList ``` 你并没有复制列表中的数据,而是让 `list` 和 `mFloorList` **指向同一个实际的列表对象** 👉 就像两个人拿着同一张地图的复印件,指向的是同一个宝藏位置。 --- ### 🎯 举个生活化比喻 想象 `mFloorList` 是一个房间的门牌号:`"301"` 你写: ```kotlin val list = mFloorList ``` 相当于: > “我现在也记下这个房间号:`list` 指向 `301`” 然后你通过 `list[0].floorName = "新名字"` → 实际上是进了 `301` 房间,改了里面的桌子标签 另一个人用 `mFloorList[0].floorName` 去看 → 看到的也是 `"新名字"`,因为你们进的是同一个房间! --- ### 🔍 内存层面解释 ```kotlin mFloorList ───┐ ├───> [Floor("A"), Floor("B")] ← 真实的数据在堆上 list ───┘ ``` - `mFloorList` 和 `list` 都是指向同一块内存区域的“引用” - 修改其中任何一个引用所指向的内容,另一个都能看到变化 - 只有当你重新赋值(如 `list = newList`),才会影响局部变量本身 --- ### 🚫 如果你真的想要“拷贝”,怎么办? #### 1. **浅拷贝列表结构(新列表,但元素相同)** ```kotlin val copiedList = ArrayList(mFloorList) // 或 mFloorList?.toMutableList() copiedList.removeAt(0) // 删除只影响副本 // mFloorList 不受影响 ``` #### 2. **深拷贝(连对象也复制)—— 需要手动实现或使用 copy()** ```kotlin data class Floor(val floorName: String) val deepCopied = mFloorList?.map { it.copy() }?.toArrayList() ``` 这样改 `deepCopied[0].floorName`,原始 `mFloorList` 完全不受影响。 --- ### ✅ 回到你的代码: ```kotlin val list = mFloorList ?: return if (position !in list.indices) return list[position].floorName = name ``` ✅ 你修改的是和 `mFloorList` **同一个列表、同一个对象**,所以: > ✔️ `mFloorList` 中的数据也被同步修改了! > ✔️ 不是“改不了”,而是“正是你要的效果”! --- ### 💡 小结:引用 vs 拷贝 | 表达式 | 是否创建新对象 | 是否影响原数据 | |-------|----------------|----------------| | `val list = mFloorList` | ❌ 否(只是引用) | ✅ 直接修改原列表/对象 | | `val list = ArrayList(mFloorList)` | ✅ 是(新列表) | ❌ 修改列表结构不影响原列表(但对象仍共享) | | `val list = mFloorList.map { it.copy() }` | ✅ 是(新列表 + 新对象) | ❌ 完全独立 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值