黑马程序员技术交流社区

标题: <已解决>求教:final变量的值在内存中的位置 [打印本页]

作者: 黑马-王言龙    时间: 2012-6-9 21:11
标题: <已解决>求教:final变量的值在内存中的位置
本帖最后由 wyl530274554 于 2012-6-12 10:48 编辑


1、<已解决>请问System.out.println("haha");     这个字符串"haha"是不是存放在字符串池里?还在在方法区保留着?<已解决>
        答: 存放于字符串池内。
2、<已解决> fianl int a = 4; (假如是在方法里定义的)
        final修饰的变量是一个常量,只能被赋值一次
        那它存在内存的哪个位置呢? ?<已解决>
        答:方法被加载后,a存在于栈中,只不过这个变量的值不能被改变;方法结束,a随之消失。






作者: 刘煜    时间: 2012-6-9 21:52
字符串“haha”还是在存放在字符串池里。“haha”字符串常量的值是一个指向“haha”字符串中第一个字符h的指针常量,System.out.println("haha")中只是把指向"haha"的指针常量传递到方法中了,java编译器会在字符串池中保存“haha”这个字符串中所有字符。需要补充的是当一个字符串常量出现在表达式中,它的值是个指针常量。希望对你有帮助
作者: 黑马-王言龙    时间: 2012-6-9 22:42
刘煜 发表于 2012-6-9 21:52
字符串“haha”还是在存放在字符串池里。“haha”字符串常量的值是一个指向“haha”字符串中第一个字符h的 ...

谢谢
就是说我们用到的都是指针常量,指向字符串池里的数据?

final int i =4;
这个东西是不是也在字符串池里存着?
作者: 刘煜    时间: 2012-6-10 11:46
wyl530274554 发表于 2012-6-9 22:42
谢谢
就是说我们用到的都是指针常量,指向字符串池里的数据?

肯定不是了,Java虚拟机的字符串池,保存着几乎所有的字符串对象。字符串表达式总是指向字符串池中的一个对象。字符串池是有String类维护的,final int i = 4中i是int类型,肯定不是在字符串池里存放着。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2