java - 为什么我们需要在某些语言中使用它之前声明变量,而在其他语言中则不需要?

标签 java python

<分区>

在 Python 和 Java 中如何为变量声明分配内存?如果没有编译步骤,解释型语言如何知道变量需要多少内存?

最佳答案

在可用之前,必须为变量分配一个内存位置,然后对其进行初始化——无论是在Java 中。 , Python ,甚至 Logo .

声明意味着通过特定的代码片段使该变量变得生动,(以 Java 为例)类似

int i;
Person p;

这些已声明,但未初始化。它们现在在内存中分配了一个位置——在某些语言中,这个位置可能在位置和大小上不断变化。但无论如何,现在内存中有一些物理位置可供运行时环境查询,以检索变量(指向它的间接指针或实际位置本身)。

既然它有一个空的“盒子”可以去,它必须被填充,也就是说它必须被“初始化”:

i = 3;
p = new Person();

现在盒子里有一些具体的东西。它可以使用了。在初始化之前尝试使用它会导致(在 Java 中)NullPointerException

某些语言要求您声明变量,以便为其显式分配内存(位置和/或大小)。有些语言会为您进行内存分配。正如对您的问题和此答案的评论中所述,存在很多差异。

关于java - 为什么我们需要在某些语言中使用它之前声明变量,而在其他语言中则不需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23090669/

相关文章:

java - 如何将用户输入行从输入文件打印到输出文件

使两条对角线都通过矩阵条目 (i,j) 的 Pythonic 方法

python - 在 dictionary.values() 列表与集合中查找的时间复杂度

python - 在 mllib kmeans pyspark 中获取集群标签

python - 如何在带有附加图表的 matplotlib 表中使用逗号分隔符格式化值?

python - 安装 SciPy 导入错误

java - 自动将参数转换为双倍

java - 如何使用带有 OpenCV 的 Java 从边界框读取文本

java - 我可以直接从我的 android 应用程序构建 android 可执行文件吗

javascript - jqGrid EditRow ErroFunc 回调用法