Chinese, Simplified subtitles

← cs101_unit3_09_l_yello-mutation

dummy description

Get Embed Code
7 Languages

Showing Revision 7 created 08/01/2014 by Fran Ontanaya.

  1. 现在 大家都已知道 链表可变
  2. 能够改变已有对象的值
  3. 但链表和字符串的不同还未真正体现
  4. 引入新变量能够让我们看清链表和字符串的差别何在
  5. 回到之前的例子
  6. 现在 我将加入另一句赋值语句
  7. 引入新变量
  8. 假定新变量为q
  9. 将p的值赋予q
  10. p的值是这个链表
  11. 现在由q来指代
  12. 记住 执行这句语句之后
  13. p和q指代同一个链表
  14. 假定有赋值语句
  15. 改变变量q中一个元素的值
  16. 假定改变q中元素4的值
  17. 就是这个元素
  18. 改变为
  19. 惊叹号
  20. p的值也同时改变
  21. 尽管赋值语句没有提到p
  22. 但正因为p和q指代同一个链表
  23. 就算没提到p p的值也发生了改变
  24. 字符串的话会如何呢
  25. 我们用字符串试一试
  26. 我们改变字符串第一个字母值时 大家能否猜出
  27. 会出现什么情况
  28. 运行 看一下
  29. 结果是错误
  30. 错误原因是字符串不可变
  31. 我们不能改变字符串的值
  32. 运行结果也显示 不能在字符串中运行赋值语句
  33. 因为字符串不可变 不支持赋值语句
  34. 可变和不可变对象的主要区别在于
  35. 如果对象可变
  36. 我们必须对其他变量加以考虑 看它们是否指代同一个对象
  37. 因为当改变某一目标值的时候
  38. 影响的不仅仅是这一变量
  39. 还会改变其他变量的值
  40. 举个例子
  41. 初始化变量p包含字符串Hello
  42. 现在引入了新变量q
  43. p等于q
  44. 打印p和q
  45. 可以看到这两个变量都包含字符串Hello
  46. 现在 我们改变位置0的值
  47. 将p位置0的值
  48. 改为字母y
  49. 这改变了p的值
  50. 但同时也改变了q的值
  51. 尽管赋值语句完全没有提及q
  52. q的值发生改变 是因为
  53. q和p指代同一对象