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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ZHAOWEI 于 2014-5-21 22:46 编辑

//方法不对,提示报错
class Demo {
        static int[] arr = new int[3];
// int[] arr = new int[3];//没有static不能创建数组这是为什么?new的数据本身就会进入堆内存,static也是把修饰的内容载入堆中,直接new不就完了,为什么还要用static关键字?
        public static void main(String[] args) {
                System.out.println(arr[0]);
        
        }
}

11 个回复

倒序浏览
  1. class Demo
  2. {
  3.         int[] arr = new int[3];
  4.         //首先主函数是静态的  
  5.         public static void main(String[] args)
  6.         {
  7.                 //在静态函数中  静态的  只能调用  静态的  无论方法  还是   变量
  8.                 System.out.println(arr[0]);//因此   你在 调用 arr[0]这个  数组  时  由于 他不是  静态的  所以 报错

  9.         }
  10. }
复制代码
回复 使用道具 举报
神了,第一次听说可以这样的,有很多事没有为什么,就像很多程序员写的第一个程序都输出“Hello World" 一样!
回复 使用道具 举报
静态方法只能调用静态的数据
回复 使用道具 举报
1.加载静态成员/代码块:
2.加载非静态成员/代码块:
3.调用构造方法(先递归地调用父类的构造方法(Object的最先)也就是上溯下行);
main方法是静态的 你知道吧,所以说程序先找到main方法区执行,发现要找数组,要是你不把数组写成static的,那么程序在这个时候如何能找到数组(请根据上面的顺序判断)
回复 使用道具 举报
主函数是静态的,静态只能调用静态
回复 使用道具 举报
你把new数组的语句放在main方法中,这样就不用static了,要放在main方法外,就是静态变量了,必须static修饰
回复 使用道具 举报

那我不在主函数中调用,新建一个非静态的方式是不是就可以了?
回复 使用道具 举报
周俊波 发表于 2014-5-20 11:22
1.加载静态成员/代码块:
2.加载非静态成员/代码块:
3.调用构造方法(先递归地调用父类的构造方法(Object ...

首先它是在成员位置建的数组,new不是会载入堆内存吗 ?这样还找不到吗?》
回复 使用道具 举报
因为要在主函数中加载,主函数是静态的,静态只能调用静态,所以要加static
回复 使用道具 举报
主函数是静态的
回复 使用道具 举报
定义数组的话一定要用static修饰   要是定义 int a=1; 在main里面输出了就不用static了

这是规定吗?为啥啊?同求?

class Test
{
         int[] arr = {1};//定义数组的话一定要用static修饰   要是定义 int a=1; 在main里面输出了就不用static了
     public static void main(String[] args) {
         System.out.println(arr[0]);
        
     }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马