简单的 JSP运行机制的问题。帮忙解释一下,谢~

来源:百度知道 编辑:UC知道 时间:2024/06/01 13:59:33
JSP文件如下:
<%!static int I=0 ; int j=0;%>
<%
for(;j++<2;)
{
out.print(I++);out.print(" ");
}
%>
同一台机器上,本页面打开第二次出现什么结果?
我测试的数据,但是不明白,请高手指点一下。
第一次加载页面输出:
0 1
---------------------------
实际数据:I=2,J=3

第二次加载页面输出:(J=3为什么还能进入循环输出呢?)
2 3
---------------------------
实际数据:I=4,J=3

第三次加载页面输出:(循环里面不输出了)

---------------------------
实际数据:I=4,J=4

质疑测试数据

首先应该搞明白两点:
1、运算符++
++在变量的前面,表示先进行加1运算,在执行该变量所在的表达式的计算;++在变量的后面,表示先执行该变量所在的表达式的计算,在执行加1运算。例如上面for循环中的j++<2,初始j=0,则先用0与2比较,返回true后,j再加1
2、静态变量的声明
static i=0后面是分号,故后面声明的j变量就不是静态变量了。本例中只有一个静态变量i。
静态变量是一次改变,终生有效。非静态变量不具备,再次执行的时候,会被重新初始化。

明白了这两点,上面这个程序片段就容易分析了,只要细心一般没问题。
第一次执行后,输出是0 1,实际数据是i=2,j=2;(j=2的时候,就不再进入循环)
第二次执行后,输出是2 3,实际数据是i=4,j=2;
第三次执行,应该也有输出,输出是4 5,实际数据是i=6,j=2.
没有上机测试,只是理论分析,也许分析错误,请斧正。

另外:这个纯粹是java的东西,和jsp的执行机制没有很大关系。其实java就是jsp的核心……也算是jsp的执行机制吧……