jsp中全局变量和局部变量

yzdiandiandidi 2011-04-10 12:56:21
jsp页面中程序:

<%! int i=1; %>
<%! int getNumber(){return i++;} %>
<%
int i=10;
out.print("i:"+getNumber()+"<br/>");
out.print("i:"+i);
%>
结果是
i:1
i:10
请问这个怎么理解
...全文
400 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ding2wife 2011-04-10
  • 打赏
  • 举报
回复
路过 飘过·····
kebikejinger 2011-04-10
  • 打赏
  • 举报
回复
i++和++i的区别:
i++:先返值再相加
++i:先相加再返值
搭火箭看日出 2011-04-10
  • 打赏
  • 举报
回复
是的,大家说挺明白了, 第一个i先返回值 再自加
wokaibuliaokou 2011-04-10
  • 打赏
  • 举报
回复
这两个变量i一个是局部变量,一个是全局变量,getNumber()方法只能返回全局变量,这个方法是先把全局变量i的值返回再把它自加1,所以你看到的方法的输出结果是1,而局部变量i在<%%>范围中有效,虽然有全局变量i存在,但是只要在<%%>之中,起作用的都是局部变量
  • 打赏
  • 举报
回复
jsp最终会转译成servelt,<%! %>中定义的变量,类似于一个servlet的成员变量, servlet在第一次初始化之后,这个变量就始终存在,而已就是全局变量。<% %>中定义的变量,类似于servlet的service方法中定义的一个局部变量,执行一次方法之后,变量就不在了。
yaganblw 2011-04-10
  • 打赏
  • 举报
回复
"<%!"和"%>"之间声明的变量在整个JSP页面内都有效,他们是成员变量,这些变量的内存空间直到服务器关闭才被释放。当多个用户请求一个JSP页面时,JSP引擎为每个用户启动一个线程,这些线程共享JSP页面中的成员变量,因此任何一个用户对JSP页面成员变量造作的结果,都会影响到其他用户。
局部变量则相反,楼主自己思考下。
<%@ page contentType="text/html;charset=gb2312" %>
<html>
<body>
<%! int i=0;%>
<% i++; %>
<p>您是第<%= i %>个访问本站的用户
</body>
</html>
Epiphone 2011-04-10
  • 打赏
  • 举报
回复
i++,它得先用一个临时对象temp保存下i这个对象,然后再对 i 这个对象进行+1操作,
返回的时候是返回那个temp对象(即未+1前的对象i)
比如i=1;printf(“hello world,%d”,i++);

这个时候显示出来的i是1.
海子尘 2011-04-10
  • 打赏
  • 举报
回复
都是用<%%>分开了,如果都写在一个<%%>里,那么第一个就会被第二个重写了
cao_juan_happy 2011-04-10
  • 打赏
  • 举报
回复
学习了

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧