A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 何超 于 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类对象的时候就编译了。

5 个回复

倒序浏览
奇怪···我的代码怎么是这样的···
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报

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

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

你现在还不清楚编译是什么,分配变量又是什么。你好好看看编译的解释把!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马