黑马程序员技术交流社区

标题: java程序编译和运行阶段代码的先后问题以及父类引用疑问 [打印本页]

作者: 何超    时间: 2013-11-5 19:23
标题: java程序编译和运行阶段代码的先后问题以及父类引用疑问
本帖最后由 何超 于 2013-11-8 12:11 编辑

看代码的时候突然发现有点不懂编译和运行阶段,到底什么时候开始编译,什么时候开始运行。
假设一段简单的代码
class  A{       static  int  m=9;        int n=3;          //这个地方        A(int a)                   {           int n=a;       };      public int  get()          {  return n ; };}class B{ public static void main()         {            A b=new A(9);                     System.out.println(b.get());               }}我想问下   int n=3 是什么时候编译的 ? 一直没有用到它所以它就一直不被编译么 还是说 int n=3 在创建A类对象的时候就编译了。


作者: 何超    时间: 2013-11-5 19:23
奇怪···我的代码怎么是这样的···
作者: ~﹏~    时间: 2013-11-5 20:44
  1. class  A{
  2.         //编译是在运行前完成的,是java将你的代码转换为字节码的过程
  3.         //Java编译程序将 Java源程序翻译为JVM可执行代码--字节码。
  4.         static  int  m=9;//这个变量只能通过A.m来访问
  5.         int n=3; //这个地方,这只是定义一个变量,和编译没有关系  
  6.         A(int a)
  7.         {           
  8.                 int n=a;      
  9.         }  
  10.         public int  get(){
  11.                 return n;
  12.         }
  13. }
  14. class B{
  15.         public static void main(){   
  16.                 A b=new A(9);//这里会为A对象分配额存储空间,也就是说n也会被分配存储空间,这里不是编译
  17.                 System.out.println(b.get());
  18.                 }
  19. }
复制代码

作者: 何超    时间: 2013-11-5 20:48
~﹏~ 发表于 2013-11-5 20:44

我的疑问就是 Int n=3 什么时候被编译呢,如果是改成 int n呢 又是什么时候!!!感觉是最基本的运行步骤,但是有时候看代码突然会卡住  不清楚谁先谁后
作者: ~﹏~    时间: 2013-11-5 21:03
何超 发表于 2013-11-5 20:48
我的疑问就是 Int n=3 什么时候被编译呢,如果是改成 int n呢 又是什么时候!!!感觉是最基本的运行步骤 ...

你现在还不清楚编译是什么,分配变量又是什么。你好好看看编译的解释把!
作者: ~﹏~    时间: 2013-11-5 21:03
何超 发表于 2013-11-5 20:48
我的疑问就是 Int n=3 什么时候被编译呢,如果是改成 int n呢 又是什么时候!!!感觉是最基本的运行步骤 ...

你现在还不清楚编译是什么,分配变量又是什么。你好好看看编译的解释把!




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