<HTML>
 <BODY>
<%!int x=7;%>
<%int x=5;%>
x=<%=x%>,<%=this.x%>
</BODY>
</HTML>
a) x=7,5
b) x=7,7
c) x=5,7
d) x=5,5答案是C 我不明白为什么是C,谁能解释下啊? 越详细越好

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【tjzero_sapce】截止到2008-07-19 13:06:39的历史汇总数据(不包括此帖):
    发帖的总数量:25                       发帖的总分数:380                      每贴平均分数:15                       
    回帖的总数量:17                       得分贴总数量:1                        回帖的得分率:5%                       
    结贴的总数量:23                       结贴的总分数:340                      
    无满意结贴数:6                        无满意结贴分:120                      
    未结的帖子数:2                        未结的总分数:40                       
    结贴的百分比:92.00 %               结分的百分比:89.47 %                  
    无满意结贴率:26.09 %               无满意结分率:35.29 %                  
    值得尊敬
      

  2.   

    <%!int x=7;%> //这个是全局变量,也就是servlet的一个属性
    <%int x=5;%> //这个是方法的局部变量,在方法中定义因此
    <%=x%>//这个输出是在方法中输出局部变量的值
    , <%=this.x%> //这个输出属性的值。所以第一个输出局部变量值5,第二个this.x输出全局变量值7.
      

  3.   

    <%!int x=7;%> 
    这句话定义的变量是类中的成员变量,jsp文件经过解析之后得到一个对应的类,<%!int x=7;%> 定义了这个类中的变量int x=7;
    而你通过<%int x=5;%> 定义的变量是方法jsp对应的Class中 _jspService()方法中定义的一个临时变量x,执行输出是在
     _jspService()方法中进行的,所以x访问到的是x=5;这个x,成员变量x被它屏蔽了。而通过this.x访问的是x=7这个变量。
      

  4.   

    比如你写一个test.jsp文件,经过tomcat解析之后生成这样一个java文件public final class test_jsp extends org.apache.jasper.runtime.HttpJspBase
        implements org.apache.jasper.runtime.JspSourceDependent {int x=7;
    ……
     public void _jspService(HttpServletRequest request, HttpServletResponse response)
            throws java.io.IOException, ServletException {
    ……
    int x=5;
    ……
     out.write("x= ");
          out.print(x);
          out.write(',');
          out.write(' ');
          out.print(this.x);
          out.write("\n");
    }
    ……
    }自己可以做个实验分析一下。