我正在尝试从Effective Java
中了解以下几行使Java如此高兴使用的一件事是它是一种安全的语言。这个 意味着在没有本机方法的情况下,它不受缓冲区溢出,阵列的影响 超支,狂野指针和其他困扰不安全的内存损坏错误 C和C ++等语言。用安全的语言,可以编写类和 无论如何,确切地知道他们的不变量将保持真实 发生在系统的任何其他部分。
什么是缓冲区溢出,数组溢出(我在这里不需要太多细节,只是简单的概述)以及Java的哪些特性使程序对overuns免疫?
答案 0 :(得分:1)
当您尝试查找数组范围之外的值时,Java会抛出ArrayIndexOutOfBoundsException
,而不是导致段错误,不可预测(从安全角度来看可能有问题)行为,或者只是崩溃操作系统
(是的,这就是C,C ++等所做的。)