jsp中的声明性标记会更新变量的值吗


<html>
<body>
<%int a=10; %>
<%!int a=20; %>
<%!int b=30; %>
The value of b multiplied by a is <%=b*a %>
</body>

第一个scriplet标记初始化a=10的值。我的问题是,第一个声明性标记,即<%!int a=20;%>将a的值更新为20,结果为600?为什么或为什么不?

以下代码不会编译,因为您不能在同一范围内声明另一个同名变量:

<html>
<body>
<%
int a = 10;
%>
<%
int a = 20;
%>
<%
int b = 30;
%>
The value of b multiplied by a is
<%=b * a%>
</body>

正确的代码如下:

<html>
<body>
<%
int a = 10;
%>
<%
a = 20;
%>
<%
int b = 30;
%>
The value of b multiplied by a is
<%=b * a%>
</body>

由于您正在用20更新a的值,无论您之前初始化了什么值,之前的值都将被覆盖,即a的值将被视为20,结果为:

The value of b multiplied by a is 600

它的工作原理如下:

public class Main {
public static void main(String[] args) {
int a = 10;
a = 20;
int b = 30;
System.out.println("The value of b multiplied by a is " + a * b);
}
}

最新更新