`
blogfeifei
  • 浏览: 1201679 次
文章分类
社区版块
存档分类
最新评论

session的存储和内存的引用

 
阅读更多

这其实是Java中变量和对象作用域的问题。
首先说说String吧,

Java代码
  1. Strings= "s" ;
  2. session .setAttribute("s" ,s);


session 里存的是指向"s"这个对象的引用,而后

Java代码
  1. s= "ss" ;


则是把s引用指向另一个对象"ss",所以输出s。对于基本类型的包装器类型,也是同理。


至于Map,

Java代码
  1. Map<String,String>s= new HashMap<String,String>();
  2. session .setAttribute("s" ,user);


把一个指向map的引用存进了session ,之后对这个HashMap对象所作的 变化,还是会反映给这个指向他的引用。
其他对象的道理,和Map一样。

可能你要问了,String和Integer同样也是对象,为什么和Map这样的对象有不同的效果呢。其实,细看你就会发现,你对String和 Integer的操作并不是在同一个对象上进行的,而是赋予了另一个不同的对象,也正因为String和Integer对象的不可变性,导致了要改变这两 个对象的值,只有新建一个对象。换句话说,只要是在同一个对象上操作,该对象的变化肯定能被session 中 的引用所反映。

你可以做如下试验,

Java 代码
  1. Mapmap= new HashMap();
  2. Mapinside=new HashMap();
  3. inside.put("1" , "a" );
  4. inside.put("2" , "b" );
  5. map.put("a" ,inside);
  6. inside=new HashMap();
  7. System.out.println(map.get("a" ));


是不是和上面是一样的结果?

上面的这些赋值都是赋的引用,而Java的基本数据类型赋的是值,所以当int被赋到session 中 后,

Java代码
  1. int i= 1 ;
  2. session .setAttribute("i" ,i);

无论这个i怎么 变,都不会改变session 中i的值。

分享到:
评论

相关推荐

    Java EJB中有、无状态SessionBean的两个例子

     在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除……

    ob-session:使在SessionStorage中存储对象更加轻松快捷

    痴迷 合并所有组件的文件大小 该OB-session软件包包含三个引用,使会话存储存储OB jects更容易和更快: 一个小的“ api”,它增强了sessionStorage.setItem,sessionStorage.getItem和sessionStorage.removeItem调用...

    关于JAVA面试的100题及其答案

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    进销存系统文档作业例子

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    超级有影响力霸气的Java面试题大全文档

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    JAVA面试题最全集

    描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。 5.列出Jsp中包含外部文件的方式,两者有何区别。 6.说明Jsp中errorPage的作用,应用范围。 7.介绍在Jsp中如何使用JavaBeans。 8.简单介绍...

    java 面试题 总结

    引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...

    涵盖了90%以上的面试题

    值传递和引用传递有什么不同? char型变量是否可以存储一个中文汉字 s=null和s=” ”是否相同 new String(“abc”)创建了几个对象 String变量做“+”运算时的编译优化 "=="和equals方法究竟有什么区别 String,...

    JAVA上百实例源码以及开源项目源代码

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    java源码包---java 源码 大量 实例

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    JAVA上百实例源码以及开源项目源代码 java开源包2

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    内存储存,速度极快 135 丰富的附加功能 136 完善的文档 137 良好的支持 137 广泛的使用 138 【Nginx】Nginx如何配置防止DDOS攻击? 139 限制每秒请求数 139 限制IP连接数 139 白名单设置 139 【数据结构】数组与...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     8.4.1 Session的save()和persist()方法  8.4.2 Session的load()和get()方法  8.4.3 Session的update()方法  8.4.4 Session的saveOrUpdate()方法  8.4.5 Session的merge()方法  8.4.6 Session的delete()方法 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     8.4.1 Session的save()和persist()方法  8.4.2 Session的load()和get()方法  8.4.3 Session的update()方法  8.4.4 Session的saveOrUpdate()方法  8.4.5 Session的merge()方法  8.4.6 Session的delete()方法 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     8.4.1 Session的save()和persist()方法  8.4.2 Session的load()和get()方法  8.4.3 Session的update()方法  8.4.4 Session的saveOrUpdate()方法  8.4.5 Session的merge()方法  8.4.6 Session的delete()方法 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     8.4.1 Session的save()和persist()方法  8.4.2 Session的load()和get()方法  8.4.3 Session的update()方法  8.4.4 Session的saveOrUpdate()方法  8.4.5 Session的merge()方法  8.4.6 Session的delete()方法 ...

    J2EE面试题

    d) 在bb.jsp中使用session的getAttribute方法取出的对象和aa.jsp中的beanName所引用的对象无关。 10) 用JSP2.0表达式语法在JSP页面上正确显示10+20的结果的是()。 a) ${10+20} b) ${10+20}; c) $(10+20)...

    千方百计笔试题大全

    67、说出ArrayList,Vector, LinkedList的存储性能和特性 17 68、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 17 69、文件读写的基本类 17 70、多线程有几种实现...

Global site tag (gtag.js) - Google Analytics