静态方法中的局部变量也是静态的吗?

2023-11-27

我想知道如果我们在静态方法中声明它们,所有局部变量都会变成静态吗?

例如:

  public static void A(){
        int x [] = {3,2};
        changeX(x);

        for (int i = 0; i< x.length; i++){
             System.out.println(x[i]);   // this will print -1 and 1
        }
  }
  private static void changeX(int[] x){
        x[0] = -1;
        x[1] =  1;
  }

据我了解,Java始终是按值传递的,但是为什么在我们进行changeX调用后X的状态发生了变化?谁能解释一下吗?谁能解释一下Java如何在内存分配方面处理静态变量?如果我们将静态变量作为参数传递给函数会发生什么(我知道人们通常不会这样做)


大多数问题的答案是“与任何其他变量相同”。

静态方法中的局部变量只是静态方法中的局部变量。它们不是静态的,也没有任何特殊之处。

Static 变量保存在附加到相应的内存中Class物体;静态引用变量引用的任何对象都位于常规堆中。

当您将静态变量作为参数传递给方法时……绝对不会发生任何有趣的事情。

关于代码中的场景:

  1. 想象一下,你有一个字符串上的玩具气球(气球是你的数组对象,字符串是对它在A().)
  2. 现在你打结another把绳子绑在气球上,然后把绳子交给朋友(这正是当你打电话给气球时发生的事情)changeX()method:字符串是方法的参数,它指向同一个对象。)
  3. 接下来,你的朋友拉动绳子,用黑色记号笔在气球上画一张脸(就像changeX()方法修改数组)。
  4. 然后你的朋友解开他的绳子,只留下你的绳子附在气球上(方法返回,局部变量在changeX()超出范围。)
  5. 最后,你卷起绳子,看着气球:当然,你看到了脸(你的脸)。A()例程会看到更改后的数组。)

真的就是这么简单!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态方法中的局部变量也是静态的吗? 的相关文章

随机推荐

  • OpenCV 确定相交/重叠区域

    我正在使用 OpenCV 和 python 创建一个拼接程序 目前正在很好地拼接图像 现在正在尝试将它们混合在一起 最终目标是使用图形切割来更好地缝合它们 但现在我只是根据发现的单应性重叠图像 Here is a photo of my c
  • px、dip、dp 和 sp 有什么区别?

    计量单位之间有什么区别 px dip dp 和 sp 来自Android 开发者文档 px Pixels corresponds to actual pixels on the screen in Inches based on the p
  • Lato 字体在 IE 和 Firefox 中缺少字母

    Lato Google 托管 不确定字体 字体是怎么回事 在 IE 8 上 字体看起来很混乱 缺少字母和单词空格 而且我听说早期 不是那么早期 版本的 Firefox 也是如此 当您无法在许多浏览器上阅读字体 或托管字体时 它有什么意义 拉
  • 需要一个正则表达式来排除某些字符串

    我正在尝试获取一个匹配的正则表达式 somefile 1 txt somefile 2 txt somefile anything txt 但不匹配 somefile 16 txt I tried somefile 16 txt 运气不好
  • 要么或需要验证

    我想使用 ComponentModel DataAnnotations 验证两个属性中至少之一具有值 我的模型看起来像这样 public class FooModel public string Bar1 get set public in
  • Flutter 中的滑动视图

    我正在尝试在 flutter 中制作类似于谷歌 苹果地图屏幕的东西 我刚刚开始在 Flutter 中进行实验 我很难理解 可拖动小部件 有人可以给我他们如何制作幻灯片视图的示例代码 我可以学习吗 我找不到 还有向上滑动面板您可以使用 Flu
  • 如何无限滚动抓取网站?

    我想爬行这个网站 我写了一个蜘蛛 但它只爬首页 即前 52 项 我试过这段代码 from scrapy spider import BaseSpider from scrapy selector import HtmlXPathSelect
  • 使用facet_wrap时如何减少facet标签之间的垂直间距?

    我使用facet wrap绘制了按两个因素分组的二维面板 最小的例子 library ggplot2 ggplot mpg aes displ hwy geom point facet wrap cyl drv 每个面板顶部的标签有两行 我
  • 命令提示符和cmd有什么区别?

    我有 Windows 7 Windows 8 和 Windows 10 系统 它们的行为都很相似 当我在开始菜单中键入命令提示符并按 Enter 键时 会出现一个标题为 命令提示符 的窗口 我给了它蓝色背景和绿色文本 当我在命令行中输入 s
  • 是否可以更改 Selector xml 中 Button 的左侧可绘制部分?

    我有一个分配给按钮的左可绘制对象以及一个背景可绘制对象 我想提供一个选择器 以便当用户按下 聚焦 禁用按钮时 其外观会发生变化 我用于左侧可绘制的图像是一个红色的 x 我希望在按下或禁用按钮时将其替换为灰色 X 使用选择器可以做到这一点吗
  • Xcode 7.3:导入模块显示有删除线

    将 Xcode 升级到 7 3 后 我发现一些模块在导入时被删除 如下截图所示 But after adding the module so just pressing enter everything is fine What does
  • 蚂蚁路径风格图案

    规则是什么蚂蚁路径风格图案 令人惊讶的是 Ant 网站本身的信息却很少 蚂蚁风格的路径模式匹配spring框架 映射使用以下规则匹配 URL 匹配一个字符 匹配零个或多个字符 匹配路径中的零个或多个 目录 spring a z 匹配正则表达
  • DropDownList 不会在 SelectedIndexChanged 上回发

    我正在编写一个 ASP Net Web 表单 其中包含一些 DropDownList 控件 然后用户更改下拉列表之一中的选定项目 ASP Net 似乎不会处理 SelectedIndexChanged 事件 直到通过单击 提交 按钮提交表单
  • 有没有办法使用 GPG 密钥在 Git 中“自动签名”提交?

    有没有一种简单的方法可以让 Git 始终对创建的每个提交或标签进行签名 我尝试过类似的东西 alias commit commit S 但这并没有达到目的 我不想安装不同的程序来实现这一点 可以轻松实现吗 只是一个附带问题 也许提交不应该被
  • 如何从Python 2.7中以空格分隔的字符串中提取整数?

    我想从字符串中提取整数 其中整数由空格分隔 即 我怎么能这么做 Input I 1 15 163 132 Result 1 15 163 132 所以我写了一个像这样的函数 def getIt aStr collect i 0 while
  • Spring Hibernate Template 执行方法为 Oracle 上的计数查询返回什么对象类型?

    当针对 Oracle 数据库运行时 以下对象的运行时类型是什么春季休眠模板 Spring 2 5 和 Hibernate 3 3 2GA 代码返回其中 SQL 查询是一个计数查询 例如select count from table Stri
  • SQL 中的常量和包含文件

    是否可以在 TSQL 存储过程中包含一组 常量 值 我遇到一种情况 我使用整数字段来存储位值 并且我有一小组 常量 值 用于针对该字段插入 选择 DECLARE CostsCalculated int 32 DECLARE Aggregat
  • 使用 Mysql 检索最后插入的 id

    再会 我愿意检索 Mysql 中新插入的行的 id 值 我知道有 mysqli insert id 函数 但是 我无法指定表格 如果同时进行查询 可能会存在检索到错误 id 的风险 我正在使用 Node js MySQL 我不想冒险查询最高
  • 从 applicationContext.xml 读取环境变量

    我需要读取 web xml 中定义的环境变量
  • 静态方法中的局部变量也是静态的吗?

    我想知道如果我们在静态方法中声明它们 所有局部变量都会变成静态吗 例如 public static void A int x 3 2 changeX x for int i 0 i lt x length i System out prin