jsp中关于!=与equals()的问题
在一个jsp中声明两个String变量s1,s2,分别接收另一个jsp传输过来的数据,通过request.getParameter()给s1,s2赋值。当传过来的值相等时...
在一个jsp中声明两个String变量s1,s2,分别接收另一个jsp传输过来的数据,通过request.getParameter()给s1,s2赋值。当传过来的值相等时。System.out.print(s1==s2);输出结果为false,System.out.println(s1.equals(s2));输出结果为true;也就是说s1与s2指向不同的内存地址。
我知道,if判断的是两个变量是否指向同一内存地址,equal判断的是两个变量的值是否相等。这种接收页面传过来的数据动态给s1,s2赋值与直接声明并赋值String s1="s";String s2="s";有什么不同?为什么前者用==判断输出false而后者用==判断输出true?
通过这个实例我也知道s1,s2那样是指向同一内存地址,关键是最后两个问号提出的问题,那两种赋值为什么会产生这种不同。你们两位答和没答差不多,这个道理我也知道,关键是为什么会产生这种不同。 展开
我知道,if判断的是两个变量是否指向同一内存地址,equal判断的是两个变量的值是否相等。这种接收页面传过来的数据动态给s1,s2赋值与直接声明并赋值String s1="s";String s2="s";有什么不同?为什么前者用==判断输出false而后者用==判断输出true?
通过这个实例我也知道s1,s2那样是指向同一内存地址,关键是最后两个问号提出的问题,那两种赋值为什么会产生这种不同。你们两位答和没答差不多,这个道理我也知道,关键是为什么会产生这种不同。 展开
4个回答
展开全部
String s1="s";String s2="s";
的时候,给s1赋值,JAVA到已经有的字符串常量中去找,看有没有"s",有的话,就直接用s1指向那个"s",没有的话,就new一个"s",再指向它,这样,这里的s1和s2都是指向的同一个"s".
如果你是request.getParameter()的话,JAVA先从参数中间拿到你的值,再用这个值new一个String对象,然后你的s1指向这个对象,这里s1,s2指向两个不同的对象。因为要保证你对每个参数的操作之间相互独立,所以会给你new一个对象
的时候,给s1赋值,JAVA到已经有的字符串常量中去找,看有没有"s",有的话,就直接用s1指向那个"s",没有的话,就new一个"s",再指向它,这样,这里的s1和s2都是指向的同一个"s".
如果你是request.getParameter()的话,JAVA先从参数中间拿到你的值,再用这个值new一个String对象,然后你的s1指向这个对象,这里s1,s2指向两个不同的对象。因为要保证你对每个参数的操作之间相互独立,所以会给你new一个对象
展开全部
System.out.print(s1==s2);//s1,s2存处於不同的地址空间
String s1="s";String s2="s";//s1,s2指向同一个地址的“s”常量(字符串池中,地址唯一。)
明白了麽?
String s1="s";String s2="s";//s1,s2指向同一个地址的“s”常量(字符串池中,地址唯一。)
明白了麽?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(栈->堆->池)
前一个类似s1 = new String("a");s2=new String("a")
s1 - new String() - "a"
s2 - new String() /
比较s1和s2时,他们指向堆里不同的内存地址,然后指向常量池里的"a";;;
而后面一个s1="a"和s2="a",他们直接指向常量池"a"
s1 - "a"
s2 /
比较s1和s2时,他们指向常量池里同一“a”,常量"a"在常量池里只有一个
前一个类似s1 = new String("a");s2=new String("a")
s1 - new String() - "a"
s2 - new String() /
比较s1和s2时,他们指向堆里不同的内存地址,然后指向常量池里的"a";;;
而后面一个s1="a"和s2="a",他们直接指向常量池"a"
s1 - "a"
s2 /
比较s1和s2时,他们指向常量池里同一“a”,常量"a"在常量池里只有一个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你都明白了,二个"s"所在的内存地址是不一样的.S1和S2指向就不一样.而"S"=="S"明显是true了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询