黑马程序员技术交流社区

标题: 这里面为什么非要静态 [打印本页]

作者: 遗忘    时间: 2013-10-28 13:25
标题: 这里面为什么非要静态
本帖最后由 遗忘 于 2013-10-28 14:47 编辑
  1. public class Insert {
  2.         
  3.         /**
  4.          * 在整数数组中指定位置插入元素,并打印插入前后的数组
  5.          * @param args
  6.          */
  7.         public static void main(String[] args)
  8.         {
  9.                 int a[]=new int[10];
  10.                 a[0]=10;
  11.                 a[1]=56;
  12.                 a[2]=34;
  13.                 a[3]=67;
  14.                 a[4]=89;
  15.                 System.out.println("插入前");
  16.                 for(int i=0;i<a.length;i++){
  17.                         System.out.print(a[i]+"  ");
  18.                 }
  19.                 insertArray(a, 3, 100);
  20.                 System.out.println("\n插入后");
  21.                 for(int i=0;i<a.length;i++){
  22.                         System.out.print(a[i]+"  ");
  23.                 }
  24.                
  25.         }
  26.         public static void insertArray(int[] arr ,int index,int value)//为什么不能把static去掉呢?
  27.         {
  28.                 for (int j = arr.length - 1; j >=index; j--) { // 为要插入的数留出位置
  29.                         arr[j] = arr[j - 1];
  30.                 }
  31.                 arr[index-1] = value;        
  32.         }
  33. }
复制代码

作者: To    时间: 2013-10-28 13:51
要去掉的话,你只能创建对象,然后调用方法
作者: 费破的可    时间: 2013-10-28 13:59
因为你主函数是静态的要调用下面的方法那下面的函数必须也是静态的
作者: 张凡    时间: 2013-10-28 14:07
主方法是静态的,只能调用静态方法。非静态方法只能通过对象实例化之后调用。如果在其它类中调用,可以不用创建对象,用类名.方法的方式调用。如果是非静态方法,是不能被主方法直接调用的!
作者: 靓仔    时间: 2013-10-28 14:15
因为你的方法是写在主函数里边的,主函数是要调用的,因为主函数也是静态的,所有成员共享,你定义了插入数组的方法,也必须需要调用insertArray方法,所以也必须要用静态修饰。使用static方法,就是成员都有的变量。比如一个班的学生,都有国籍是中国,这时定义国籍时,直接可以用static修饰,类直接调用,这样在定义学生时不必每次在定义学生国籍了,比较方便。




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