jsp中的盲区-面试可能会问到的东西
Posted 晴空万里
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp中的盲区-面试可能会问到的东西相关的知识,希望对你有一定的参考价值。
1、今天看到一个有趣的JSP题目。
<body>
This is my JSP page. <br>
<%
int a = 10;
%>
<%
out.print(a++);
%>
<%=a %>
<%!
int a = 100;
%>
<%
out.print(a++);
%>
</body>
输出结果:10 11 11
有人可能会问最后一个输出为什么不是100
个人解释: <%!
int a = 100;
%> 内的代码相当于全局变量。
而
<%
out.print(a++);
%>
执行的是方法内部的代码。也就是执行局部变量的代码。所以输出 11
2、如果代码是这样的:
<body> This is my JSP page. <br> <% int a = 10; %> <% out.print(a++); %> <br/> <%=a %> <%! int a = 100; %> <% out.print(this.a++); %> </body>
输出结果是这样的:10 11 100 最后一行会执行输出成员变量的参数。
3、请问方法fun1会执行么?代码如下
<body> This is my JSP page. <br> <% int a = 10; %> <% out.print(a++); %> <br/> <%=a %> <%! int a = 100; public void fun1() { System.out.println(a); } %> <% out.print(this.a++); %> </body>
答案是不会执行。<%! 代码..... %> 内的方法类似于在类内的方法。需要调用才会执行。正确执行代码如下。
<body> This is my JSP page. <br> <% int a = 10; %> <% out.print(a++); %> <br/> <%=a %> <%! int a = 100; public void fun1() { System.out.println(a); } %> <% out.print(this.a++); fun1(); %> </body>
以上是关于jsp中的盲区-面试可能会问到的东西的主要内容,如果未能解决你的问题,请参考以下文章