CS61B 课程笔记(Lecture 12 Coding in the Real World, Review)

编程在现实世界中的应用

  • Tesla 装配线(短片)
  • Facebook 月活跃用户超过20亿。

当前经济动荡

  • 四个导致社会剧变的趋势:
    • 城市化
    • 技术变革
    • 全球老龄化
    • 从北美和欧洲的贸易中心转移
  • 这一变化速度是工业革命的十倍,规模是其300倍。

预备考试问答

运行时错误与继承

  • 运行时错误示例:

    • NullPointerException, IndexOutOfBoundsException

    • ClassCastException 示例:

      1
      Animal a = (Dog) new Animal(); // 运行时错误
    • 编译错误与运行错误的区别:

      1
      Dog a = (Dog) new Animal(); // 没有编译错误,但运行时错误

字符串比较

  • 使用 ==.equals() 的区别:
    • == 比较的是内存地址,.equals() 比较的是值。
    • 对于字符串常量,可能由于字符串池(interning)而共享同一地址。
    • 整型(int)不受影响,所有整型值相同。
    • 对于 Integer,建议使用 .equals()

非破坏性方法

  • 例如 incrList(int x) 方法的设计需要避免使用 new 来创建新的列表。

静态方法访问

  • 静态方法只能访问其他静态成员,不能访问实例成员。
  • 静态方法可以实例化对象。

类与构造函数

  • 如果不显式调用超类构造函数,Java 会自动调用无参构造函数。
  • 如果超类没有无参构造函数,则会导致编译错误。

嵌套类的访问

  • 外部类的非静态内部类可以访问外部类的实例变量。
  • 静态内部类无法访问外部类的实例变量。