1.变量的作用域和生命周期什么关系?2.java除了在类体和方法体(包括参数)中可以声明变量外,其他位置一定不可以声明变量吗?比如高级别的应用里是不是有例外呢?3.java源文件中代码的组织方式一定是:class ClassName1{//类定义
    //成员变量定义
    //成员方法定义
}
class ClassName2{//类定义
    //成员变量定义
    //成员方法定义
}//.......
一定是以上这种结构吗?比如在两个类定义之间一定不可能有其他代码吗(注释除外)?类体中除了成员变量和成员方法的定义外一定不可能有其他内容吗?成员变量和成员方法的定义可不可以打乱顺序?4.JVM到底把内存分成几个部分啊?不同资料里说的不一样啊。。
现在学Java,感觉这些最基础的观念还需要强化,希望高手指点。

解决方案 »

  1.   

    1.变量的作用域和生命周期什么关系?
    ——可以理解为基本一致,或者说生命周期决定作用域。2.java除了在类体和方法体(包括参数)中可以声明变量外,其他位置一定不可以声明变量吗?比如高级别的应用里是不是有例外呢?
    ——你还想在哪声明变量呢?Java不支持超出三界外不在五行中的所谓“全局变量”3.java源文件中代码的组织方式一定是一定是以上这种结构吗?
    ——Java毕竟鼓吹其面向对象,那么类以外的是啥?有意义么?(宇宙外面是啥?)
    ——除了成员变量和成员方法的定义外,没有其它了。
    ——定义的顺序可以打乱,但毕竟你要照顾阅读者的感受吧。4.JVM到底把内存分成几个部分啊?
    ——这是有JVM厂商决定的,即便是一个厂商可能不同版本的JVM也会不一样。千万别误会:JVM可不仅仅是Sun才有。
      

  2.   


    可以访问。实际上有不少人的书写习惯是将所有变量的声明放在类定义的最后面。虽然函数和变量的顺序可以无所谓,但是也要注意另外的问题。变量定义自身如果有依赖关系的,顺序不能随意打乱,比如:
    private int a = 8;
    private int b = a;静态块如果跟变量存在依赖关系的,顺序不能随意打乱,比如:
    private static int a = 1;
    static {
      a = a * 2;
    }
      

  3.   

    ◎ “但是如果单从代码的组织形式来看,他们的地位应该是平等的吧?”
    ——作用域范畴都不同,咋能说他们是平等的?
    ——就好比:一个是全国有效的法规,一个是地方性法规,作用域其实就是地位的象征啊。
    ——仅就从代码组织形式而言,一个是在函数{}外,一个在函数{}内。
    ——再比如:
    public void run() {
      int a = 0;
      while (true) {
        int b = 1;
      }
      System.out.println(b); // 能行么?因为int b是在深层次{}里面的,在函数这个局部中更为局部
    }
    ◎ 所谓的“面向对象技术”无非也就是“组织代码的一种方式”而已吧
    ——其实代码不关键,面向对象是一种设计思想。至于怎么去更好的实现面向对象或者支持面向对象,各有各的做法和发展。
    ——此外,并不是所有的东西都必须面向对象。我们常说:大处面向对象,小处面向过程。
    ◎ 与面向对象相关的一系列概念结构(类、对象、封装等)不过是我们为了更好地理解这种“代码组织方式”而在头脑中人为地构建起来的系统性的逻辑关系
    ——没错。很多思想,其实都是在研究如何更好的让计算机语言能更容易与现实业务映射。
      

  4.   

    JAVA写起来是很随意的,你可变边写着这个方法也可以写另一个方法或类!
      

  5.   

    谢谢补充。
    java中的变量,或者是成员变量,或者是局部变量,是这样吗?有没有其他的可能性?
      

  6.   

    在java中没有其他可能了,变量只能在{}中定义,{}要么是类定义,要么是方法定义(或静态代码块,初始化代码块),即java的变量分为类变量(也较静态变量),实例变量(也较成员变量)和局部变量。
      

  7.   

    1.变量的作用域和生命周期什么关系?
    ——可以理解为基本一致,或者说生命周期决定作用域。2.java除了在类体和方法体(包括参数)中可以声明变量外,其他位置一定不可以声明变量吗?比如高级别的应用里是不是有例外呢?
    ——你还想在哪声明变量呢?Java不支持超出三界外不在五行中的所谓“全局变量”3.java源文件中代码的组织方式一定是一定是以上这种结构吗?
    ——Java毕竟鼓吹其面向对象,那么类以外的是啥?有意义么?(宇宙外面是啥?)
    ——除了成员变量和成员方法的定义外,没有其它了。
    ——定义的顺序可以打乱,但毕竟你要照顾阅读者的感受吧。4.JVM到底把内存分成几个部分啊?
    ——这是有JVM厂商决定的,即便是一个厂商可能不同版本的JVM也会不一样。千万别误会:JVM可不仅仅是Sun才有。
      

  8.   

    java类中支持全局变量但你们所说的java不支持全局变量是什么意思啊不是很明白
      

  9.   

    你说的java中支持全局变量应该指的是静态变量,而上面所说的不支持全局变量指的是类似C/C++的全局变量
      

  10.   

    java中不存在全局变量,主要指的应该是java中在类体之外不能声明变量,也就是不存在在程序所有位置都能访问的变量,因为java是完全面向对象的,而不像c++,还有面向过程的特性。我是这么理解的。