1. 程式人生 > >jsp中的盲區-面試可能會問到的東西

jsp中的盲區-面試可能會問到的東西

結果 body style 成員 light 有趣 一行 int 為什麽

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中的盲區-面試可能會問到的東西