问题:执行如下代码,反复刷新JSP页。
<body>
<%!
int x = 10; //全局变量
%>
<%
int y = 10; //局部变量
out.println("<h2>x = " + x++ + "</h2>");
out.println("<h2>y = " + y++ + "</h2>");
%>
</body>
得到的结果如下所示:
刷新0次:
x = 10
y = 10
刷新1次:
x = 11
y = 10
刷新2次:
x = 12
y = 10
首先,明确一点:全局变量和局部变量使用不同的脚本元素的定义。
① 定义局部变量、语句: <% %>
② 定义全局变量、方法和类: <%! %>
jsp局部变量保存在栈中,所以一定要有初值。
当jsp执行很多次时,调用多少次就会重新初始化多少次,所以局部变量的值始终保持不变。
对于全局变量来说,不管执行多少次,上一次对全局变量的执行结果即为下一次执行的初始值。
(与其执行机制有关,后续补充。)