为什么这个 for-each 循环不起作用? [复制]

2023-11-22

在此代码中,为什么我的数组没有按照我想要的方式初始化? for-each 循环不是设计来做到这一点的,还是我只是没有正确使用它?

    int[] array = new int[5];

    //initialise array -> Doesn't work! Array still full of 0's
    for(int i : array)
        i = 24;

for-each 循环不适用于这种情况。不能使用 for-each 循环来初始化数组。你的代码:

int[] array = new int[5];
for (int i : array) {
    i = 24;
}

将翻译为如下内容:

int[] array = new int[5];
for (int j = 0; j < array.length; j++) {
    int i = array[j];
    i = 24;
}

如果这是一个对象数组,它仍然会失败。基本上,for-each 依次将集合或数组中的每个条目分配给您提供的变量,然后您可以使用该变量。变量是not相当于数组引用。它只是一个变量。

For-each不能用于初始化any数组或集合,因为它循环遍历数组或集合的当前内容,为您提供每个value一次一个。 for-each 中的变量是not数组或集合引用的代理。编译器不会替换你的“i“ (从 ”int i“) 和 ”array[index]".

例如,如果您有一个日期数组,请尝试以下代码:

Date[] array = new Date[5];
for (Date d : array) {
    d = new Date();
}

会被翻译成这样:

Date[] array = new Date[5];
for (int i = 0; i < array.length; i++) {
    Date d = array[i];
    d = new Date();
}

如您所见,这不会初始化数组。您最终将得到一个包含所有空值的数组。

注意:我将上面的代码编译成.class文件,然后使用jad来反编译它。此过程给出了以下代码,由 Sun Java 编译器 (1.6) 根据上面的代码生成:

int array[] = new int[5];
int ai[];
int k = (ai = array).length;
for(int j = 0; j < k; j++)
{
    int i = ai[j];
    i = 5;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么这个 for-each 循环不起作用? [复制] 的相关文章

随机推荐

  • Android 静态 Application.getInstance()

    你能帮我解决这个情况吗 我们正在使用一个类的静态实例 该类扩展了 android 中的 Application public class MyClass extends Application public static MyClass g
  • 成员名称和构造函数参数名称之间的冲突[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的成员与方法参数访问 我有一个班级 有一些成员 比如x y width and height 在它的构造函数中 我不会这样做 A A int x int y int width int heig
  • 如何在单独的文件夹中添加资源?

    当我尝试通过单击 添加现有项目 在资源设计器中添加资源时 该项目被放置在 资源 文件夹中 问题是 如果我在资源目录中创建一个新目录并将资源放在那里 我会收到编译器错误 无法找到文件 我无法将所有资源放在一个文件夹中 因为我必须添加 2500
  • C# 中的 Struct.Pack 等效吗?

    我正在构建一个连接到渲染应用程序的 C 客户端 但失败了 我通过剖析一个适用于这一行的Python客户端来缩小问题范围 def Startclient Click self sender e try s socket socket sock
  • Linux 中的 Java - root 和非 root 的不同外观类

    我注意到 Java 为 root 和非 root 用户提供了不同的外观类 我试图了解如何使 LAF 保持一致 此外 即使在用户 root 内也是不一致的 取决于用户 root 的登录方式 示例代码 编译并打包在laf jar import
  • 使用decimal.ToString("C") 和 CultureInfo 自定义货币符号和小数位

    我有一个问题decimal ToString C 覆盖 基本上我想做的是如下 CultureInfo usCulture new CultureInfo en US Thread CurrentThread CurrentCulture u
  • 远程远程端点 RDFLib / Redland 上的 SPARQL 查询

    我正在尝试查询远程端点并获取 owl sameAs 映射 我尝试了 RDFLib 和 Redland 但都不适合我 可能我没有正确处理名称空间 这是我在 RDFLib 中的尝试 import rdflib rdflib plugin reg
  • 静态方法中的 findViewById

    我有这个静态方法 public static void displayLevelUp int level Context context LayoutInflater inflater LayoutInflater context getS
  • 非阻塞文件读取

    如何以非阻塞模式读取二进制或文本文件的内容 对于二进制文件 当我open filename mode rb 我得到一个实例io BufferedReader 文档堡垒io BufferedReader read says 读取并返回 siz
  • 理解“finally”块

    我编写了七个测试用例来理解finally堵塞 背后的逻辑是什么finally works package core public class Test public static void main String args new Test
  • Zend 框架:元属性集成

    我正在尝试根据页面内容将一些元 采用以下格式 添加到页面的头部 使用headMeta gt appendName像这样 this gt view gt headMeta gt appendName og title some content
  • Huggingface 转换器模型返回字符串而不是 logits

    我正在尝试从 Huggingface 网站运行这个示例 https huggingface co transformers task summary html 模型似乎返回两个字符串而不是 logits 这会导致 torch argmax
  • 如何更新cosmos db中的子文档

    我是 Cosmos Db 的新手 想了解如何删除 更新插入文档集合中的子文档 如果我有一个文件 Id 1234 Name foo Items Id abcd Age 35 Claims Name email Value email prot
  • 使用 ftplib 连接到 FTP TLS 1.2 服务器

    我尝试连接到仅支持 TLS 1 2 的 FTP 服务器 使用Python 3 4 1 My Code import ftplib import ssl ftps ftplib FTP TLS ftps ssl version ssl PRO
  • SQL Server 中非常大的表

    我们有一个非常大的表 gt 77M 记录并且还在不断增长 在 SQL Server 2005 64 位标准版上运行 并且我们发现了一些性能问题 每天添加多达十万条记录 有谁知道SQL Server标准版可以处理的记录数量是否有限制 应该考虑
  • 带有 TransactionScope 的嵌套事务

    如果你有这样的事情 IBinaryAssetStructureRepository rep new BinaryAssetStructureRepository var userDto new UserDto id 3345 var dto
  • 从 google 搜索下载前 1000 张图片

    我对谷歌图片进行了一些搜索 结果是数千张照片 我正在寻找一个可以下载第一个的 shell 脚本n图像 例如 1000 或 500 我怎样才能做到这一点 我想我需要一些高级的正则表达式或类似的东西 我尝试了很多方法但都无济于事 有人可以帮助我
  • 从数据框中删除具有相同值的列

    我有一个像这样的数据框 1 1 1 K 1 K K 2 1 2 K 1 K K 3 8 3 K 1 K K 4 8 2 K 1 K K 1 1 1 K 1 K K 2 1 2 K 1 K K 我想删除所有具有相同值 即 K 的列 所以我的结
  • Laravel 5 删除尾部斜杠时的不良行为

    我在下面创建了一个 Laravel 项目mywebsite com laravel 当我去mywebsite com laravel test 一切都很好 但是当我去mywebsite com laravel test 我被重定向到mywe
  • 为什么这个 for-each 循环不起作用? [复制]

    这个问题在这里已经有答案了 在此代码中 为什么我的数组没有按照我想要的方式初始化 for each 循环不是设计来做到这一点的 还是我只是没有正确使用它 int array new int 5 initialise array gt Doe