日期:2014-05-20  浏览次数:20705 次

关于static内存分配
静态成员方法不能访问非静态成员。
静态内部类中只能访问外部类的静态成员变量,静态成员方法。
非静态内部类只能有非静态方法。
这些怎么理解啊??也就是说以上问题的否命题为什么不成立啊?都把我给弄晕了。。。
静态属于某个类,只有一个副本;非静态属于某个实例对象。我想应该是内存分配的问题吧?有没有内存分配的图,具体例子看看。。。。。谢谢大家了!!!

------解决方案--------------------
这跟 内存分配 没有 一点点关系 这个应该是面向对象思维 就这么规定的`` 例如 private 就只能 自身用; 你能说 private 在 其他内存区么`?? 学java 就不要讨论任何 内存 缓存器 云云的东西 知道有这么回事就行```

好了进入正题 static 用处` --> 这个不好说 每个人 都有 自己的 想法 和 认知度 我仅仅说我的想法`` 对错 不要喷 指出错误就好``

static 是全局变量也就是说整个项目中最核心的东西 是整个项目! static的 变量 和方法 不应该 受 某一个具体类 的影响 这是定义static的 前提 (static 方法也是如此!) 当然 这个也是相对的 Ex 我要写 一个函数 public static int add(int x , int y){ return x+y ;}; 这个就可以用static 为啥 因为 它不受 自身类的影响 所以 应该是全局函数 (也要根据 具体封装境况 来设置 static 多写程序 会有体会的 private 也是 练出来的 不是 学出来的 ) 

------解决方案--------------------
因为静态成员的创建是在类产生的时候创建,也就是说静态成员创建的时候也许相应的对象还没有创建呢.所以它没有绑定任何对象,所以不能访问对象成员。即便有对象,你也不能确定绑定的是哪个对象
------解决方案--------------------
你可以这样理解,静态的东西专门放在一个内存块中,所有的对象都指向他。
我自己是这么理解的,虽然不一定对,但是这么理解未尝不可,很容易记住。

------解决方案--------------------
内存分配是java内部机制,可以理解为static在类装载后就已经初始化了,而对象其它成员要等对象初始化才分配内存.
------解决方案--------------------
正解!!!!
探讨

因为静态成员的创建是在类产生的时候创建,也就是说静态成员创建的时候也许相应的对象还没有创建呢.所以它没有绑定任何对象,所以不能访问对象成员。即便有对象,你也不能确定绑定的是哪个对象

------解决方案--------------------
探讨

因为静态成员的创建是在类产生的时候创建,也就是说静态成员创建的时候也许相应的对象还没有创建呢.所以它没有绑定任何对象,所以不能访问对象成员。即便有对象,你也不能确定绑定的是哪个对象

------解决方案--------------------
去看看内存的分配就明白了 
static声明的东西在程序一开始就装入内存了,这里所以访问的必须是已经存在的变量就是静态变量 静态类也是这样的