标题:初级问题求助,想从内存角度理解,请大神指导
只看楼主
ma948239
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-2-27
结帖率:33.33%
已结贴  问题点数:5 回复次数:5 
初级问题求助,想从内存角度理解,请大神指导
这个小程序
public class Test
   private static int j = 0;
   private static boolean methodB(int k){
     j += k;
     return ture;
   }
   public static void meethodA(int i){
     boolean b;
     b = i < 10 | methodB(4);
     b = i < 10 | methodA(8);
   }
   public static void main(String args[]){
     methodA(0);
     System.out.println(j);
   }
写出他的输出的结果  结果是4

我的疑惑:
1:static int j = 0 j是静态的,它的值不应该是不变的吗?如果是变化的话,那么它在内存中是如何变化的?
2:在main方法中没有声明创建新的类Test啊,可是为什么可以调用methodA方法?

  我感觉这个第一个疑问和这个是一样
class Test
{
  public static void main(String args[]){
    int a =0;
    System.out.println(a++);
    System.out.println(a++);
    System.out.println(a);
    System.out.println(++a);
}
我认为每次println方法总是去取上方的a,所以我就出错了。

新人 ,没有多少分所以吝啬了,对不起!求知若渴真心求教!
搜索更多相关主题的帖子: static private public return 
2013-02-27 22:53
SUXU19881102
Rank: 1
等 级:新手上路
帖 子:10
专家分:4
注 册:2013-2-27
得分:0 
静态变量好像可以通过对象引用赋值改变。。。。
静态变量储存在DATA内存区。。。
好吧。。我也是新来的。。只知道一点点。。。。
2013-02-28 00:09
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
得分:3 
首先static 静态是不代表不变 代表不变的是final
你定义J是一个全局变量 最后输出J当然是4 一般 来说JAVA不用太考虑内存问题 因为那是C做的事

2.你的函数和main都 是写在一个类中 是不需要实例化的
    如果你要在另一个类中访问才需要实例化 :就是 Test test =new Test()  通过test来访问


2013-02-28 09:34
ren829
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:15
帖 子:255
专家分:1174
注 册:2006-3-11
得分:2 
话说基本数据类型都存储与栈内存之中,还有引用变量也是存储与栈内存之中,他们和对象不一样,所以你定义的 j k 0 4都存在与栈内存之中,只是最开始j指向0 ,后来变成j k都指向4,
2013-02-28 10:40
ma948239
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-2-27
得分:0 
回复 3楼 hhwz
谢谢您的帮助,讲解的很清晰。以后有问题还希望您可以帮助我!谢谢
2013-02-28 11:22
ma948239
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-2-27
得分:0 
回复 4楼 ren829
谢谢,您所讲的就是我想知道的内存中的事情。
2013-02-28 11:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-399347-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.120995 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved