(Integer)session.getAttribute("userType")).equals(new Integer(1))啥意思~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(Integer)session.getAttribute("userType")).equals(new Integer(1))啥意思~相关的知识,希望对你有一定的参考价值。

部分代码
if(((Integer)session.getAttribute("userType")).equals(new Integer(1)))

%>
<a href="personal/index.jsp">普通用户</a>
<%
else
%>
<a href="manager/index.jsp">管理员</a>
<%

%>
主要不能理解((Integer)session.getAttribute("userType")).equals(new Integer(1))
意思是不是将setAttribute中参数value值传过来转换为Int类型,如果是类型1哪么就是普通用户?哪么new Integer(1)主要是什么意思,什么语法啊?为什么不能直接写equals(1);

参考技术A equals()方法要求一个object对象为参数, 而1是原始数据类型
必须包装成Integer对象
参考技术B Integer是封装类 其实可以有其他方法方法比较的 例如((String)session.getAttribute("userType")).equals("1")本回答被提问者采纳

为啥 (Integer) 222 != (Integer) 222 在 Java 中? [复制]

【中文标题】为啥 (Integer) 222 != (Integer) 222 在 Java 中? [复制]【英文标题】:Why (Integer) 222 != (Integer) 222 in Java? [duplicate]为什么 (Integer) 222 != (Integer) 222 在 Java 中? [复制] 【发布时间】:2016-05-26 08:52:51 【问题描述】:

(Integer) 1 == (Integer) 1 也是如此,这似乎是合法的。

那么,为什么它对(Integer) 222 的相等性进行了偏移?

【问题讨论】:

只是不要使用 == "因为它适用于这种情况",你是在比较对象,所以使用 equals。 【参考方案1】:

Integer 是一个类。因此,要比较对象,您需要使用 equals 而不是 ==

使用较短的 Integer 实际发生的情况是,如果您使用 valueOf 方法获得 Integer,则对于 -128 和 127 之间的值,您始终会获得相同的缓存实例。所以在这种情况下,== 有效。

如果您不使用valueOf 而是使用运算符new 显式创建一个新实例,则它不起作用。


为了更清楚,我写了 valueOf 的当前实现

public static Integer valueOf(int i) 
    final int offset = 128;
    if (i >= -128 && i <= 127)  // must cache
        return IntegerCache.cache[i + offset];
    
    return new Integer(i);

【讨论】:

但它适用于 (Integer) 1 == (Integer) 1 ? 检查更新的答案 有趣的 -1 以获得正确答案 我没有投反对票,但人们也对回答不应回答的问题的人投反对票 - 在这种情况下,因为它显然是重复的。 是的,但对正确答案投反对票总是一种不好的行为。更好的是投票结束问题,而不是否决正确答案。

以上是关于(Integer)session.getAttribute("userType")).equals(new Integer(1))啥意思~的主要内容,如果未能解决你的问题,请参考以下文章

Integer.valueOf() 与 Integer.parseInt() [重复]

int 和 integer 有啥区别

sql integer vs binary_integer vs pls_integer

Java Integer 缓存特性(Integer最大/小值探究整型的自动装箱)

R语言中numeric 和 integer 的区别

integer和int的区别 你会区别吗