u011059021
KK_在努力
2018-04-11 06:42
采纳率: 100%
浏览 5.4k
已采纳

java局部变量 int a =1是存放在哪里

1.基本类型的 变量 a 和他所指向的值 1是存在栈里还是方法区的常量池中。
2.a中存的是1的值还是地址?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • flonny
    精锐小菜鸡 2018-04-11 07:31
    已采纳

    说来惭愧,竟然都有些模糊了,一个方法中的变量名和变量值(这是两个概念)一般都是存在方法栈的本地变量数组中,有一种情况就是当变量的值为-128~127时,变量的值不会新建内存而是直接引用方法区常量池中的值。
    所以你上面的第一个问题是,a这个变量名在栈的本地变量数组中,1这个值是直接引用方法区常量池中的值
    第二个问题是,a中存的是1这个字面值,因为执行了int a = 1这个赋值操作

    点赞 1 评论
  • caozhy

    这个问题我想再补充下。
    lz陷入一种悖论中。因为不知道,所以要提问,然后面对各种矛盾的回答,你不知道相信谁。最后,你还是不知道。
    这种情况下,lz无非两个选择:
    (1)采用“投票”的方式,看哪种说法的回答多,就相信谁。
    大部分的人为什么永远没有办法进步就是在于此,一方面他想从菜鸟的群体中脱离出来,另一方面他只接受菜鸟中大多数人的意见。并且顽固地认为这才是正确的认知方式。
    (2)加上自己的思考、判断和求证。
    求证的方式很简单,只要按照你的要求写个程序,反编译下java字节码,然后你就看到结论了。这是解决问题的终极方式。这个问题可以这么解决。
    思考和判断是更进阶的方式。
    可以教你一个简单的思想方法,我们把它叫做"奥卡姆剃刀原理"。简单来说就是八个字,如无必要,勿增实体。如果有两个理论都可以解释同一个事物,那么简单的那个取胜。
    运用这个原理,你可以把自己想象成java语言的发明者和jvm的设计者。然后倒推这个问题。
    为什么java要分为什么常量、简单类型、引用类型等等,显然java并非是为了考试和刁难它的使用者而徒增这些概念的。唯一的动机就是增加复杂性换取性能。那么如果不换取性能,最简单的方式是什么呢,显然就是一切变量都是引用类型,这是最简单的。一个引用类型可以概括java里所有的东西。
    那么简单类型和常量是什么,它是特例。用特例换取性能。对于整数来说,它频繁参与到计算中,如果用定义一个类,并且使用一个指针的方式来使用它,就会浪费很多性能。所以才有了简单类型。而常量是怎么回事?它是对大量重复使用的引用类型的一种性能优化,用共享对象的方式,来将大量相同的对象合并存储唯一的一份。搞清楚了这些,再回过头来看你的问题,就很简单了。

    点赞 5 评论
  • u012748272
    huntforwind 2018-04-11 06:46

    首先明确a是int类型,基本类型,所以问题2的答案很明显,a中存的是1的值,因为是局部变量,所以是在a和1均在方法区中

    点赞 3 评论
  • caozhy

    如果是写在函数里的,那么a放在堆栈上。存储的就是值。
    Integer(1)放在常量池中

    点赞 评论
  • z979451341
    键盘舞者113 2018-04-11 06:59

    问题二 a存的值是1,但他的内存地址指向常量池1,

    点赞 评论
  • qq_41546779
    qq_41546779 2018-04-11 06:59

    1.a是变量,所以方法执行的时候a和它的值在栈中,方法执行完后a就销毁了
    2.a中存的是1的值。

    点赞 评论
  • liushuiwen101423
    liushuiwen101423 2018-04-11 07:04

    局部变量存在栈中。类中常量和静态变量等放在常量池中。

    点赞 评论
  • qq_25449449
    萌萌的糖宝 2018-04-11 08:18

    栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)

    点赞 评论
  • qq_40890412
    liang_jia_ming 2019-03-06 21:40

    楼主弄明白了嘛 最近复习的时候也遇到了这个问题 现在的理解是 int a 这个a变量存在栈中 但是这个代表值的1不知道是怎么算的 假如有个int b =1 那这俩个1在实际内存中的地址不知道是不是一致的 望解答

    点赞 评论

相关推荐