见鬼了,怎么<%! static int i=0;%>和<%! int i=0;%>效果一样啊?
是不是我机器问题???

解决方案 »

  1.   

    都是在同一个页面使用,加不加static貌似没有什么区别,都是全局变量,直接使用的效果是一样的啊
      

  2.   

    应该是不一样的吧
    static是静态的变量是全局的
    而另一个应该是局部的吧
      

  3.   

    在同一次SESSION中 你声明的2个变量是没有区别的
      

  4.   

    <%! static int i=0;%>和<%! int i=0;%>
    一个是实例变量,一个是类变量,這整理解有問題吧,在class中才這樣理解.
      

  5.   

    public,protected,private,static,什 么时候用,为什么要用,怎么用 每个类都创造了有自己的名字空间,指方法和变量可以知道彼此的存在,可以使用。  
         public类不但可以被同一程序包中的其它类使用,别的程序包中的类也可以使用;  
        变量和方法的修饰字public、protected、private:  
        public:任何其他类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法。  
        class ABC{  
            public int pub_i=5;  
            public void show)(){  
            System.out.println("pub_i"+pub_i);  
        }  
        class Demo{  
            public static void main(String args[]){  
            ABC abc=new ABC();  
            System.out.println("abc.pub_i"+abc.pub_i);  
            abc.pub_i=10;  
            abc.show();  
            }  
        }  
        protected变量和方法:  
        如果一个类中变量或方法有修饰字protected,同一类、同一包可以使用。不同包的类要使用,必须是该类的子类,可以存取变量或调用。  
        public class ABC{  
            protected int pro_i=5;  
            protected void show(){  
            System.out.println("pro_i=" +pro_i);}  
        }  
        同包的类:  
        class DEF{  
            public static void main(String  args[]){  
                ABC abc=new ABC();  
                System.out.println("abc.pro_i="+abc.pro_i);  
                abc.pub_i=10;  
                abc.show();  
            }  
        }  
        不同包但是是子类:  
        import mytest.pack.ABC;  
        class DEF extends ABC{  
        public static void main(String agrs[]){  
            DEF def=new DEF();  
            System.out.println(def.i);  
            def.i=10;  
            def.show();}  
        }  
        private不允许任何其他类存取和调用; 
        当子类中的变量名与父类的相同,原来的变量被遮盖。  
        方法的覆盖(overriding)和重载(overloading)。子孙类中定义的方法和祖先类中某个方法同名、同参数行,则祖先类中的该方法被覆盖;方法的重载是指一个对象的多态性,即多个方法用相同的名称,但参数行不同。  
        final:  
            final在方法之前,防止该方法被覆盖;  
            final在类之前,标是该类不能被继承;  
            final在变量之前,定义一个常量。  
        static:  
        在变量或方法之前,表明它们是属于类的;  
        静态变量在各实例间共享,如果是public静态变量,则其它类可以不通过实例化访问它们;  
        静态方法称为类的方法,因此不用实例化即可调用(面向过程)  
        一个对象的方法可以访问对象的数据成员,尽管不属于方法的局部变量;一个类的方法只能访问自己的局部变量。  
        例:不正确的引用  
        class StaticError{  
            String mystring="hello";  
            public static void main(String args[]){  
                System.out.println(mystring);}  
            }  
        错误信息:can’t make a static reference to nonstatic variable.  
        为什么不正确?只有对象的方法可以访问对象的变量。  
        解决的办法:  
            1) 将变量改称类变量  
        class StaticError{  
            static String mystring="hello";  
                public static void main(String args[]){  
                System.out.println(mystring);}  
        }  
            2) 先创建一个类的实例  
        class NoStaticError{  
            public static void main(String args[]){  
                String mystring="hello";  
                System.out.println(mystring);}  
            }  
        }