java中关于map值修改问你

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中关于map值修改问你相关的知识,希望对你有一定的参考价值。

如果把map当做参数传给一个方法A,A方法里把map的值修改了,原MAP也会被修改,但是不是bean对象包含get,set才能这么做吗?map方法的get,set也符合这个规范嘛?

参考技术A 你要搞清楚值传递和引用传递,还有就是基本数据类型和引用数据类型,基本数据类型传递的是值,而引用数据类型传递的是一个地址值,只要是传递地址值的你改变后哪里都会改变,map也是引用类型,基本类型只有那8种,你知道吧.本回答被提问者和网友采纳

Java中关于String对象引用的问题?

新手请教下假如我定义了一个String类的对象String str = "abc";再将其修改为String str = "def";这是str应该是指向堆内存中的def,然后我又将其改回String str ="abc";这时str会指向原来的abc,还是在堆内存中重新分配abc的空间再指向它呢??不胜感激!!

你要明白,何时分配堆内存,何时分配栈内存。
String a = "aaa";
用这种方式的时候java首先在内存中寻找"aaa"字符串,如果有,就把aaa的地址给它
如果没有则创建
String a = new String("aaa");
是不管内存中有没有"aaa"
都开辟一块新内存保存它
可以用以下方法验证下
String a = "aaa";
String b = "aaa";
String c = new String("aaa");
System.out.println(a==b);
System.out.println(a==c);
结果应该是:
true
false
此题作为java程序员笔试题几率比较高。
你要好好记住哦!O(∩_∩)O~
参考技术A 不是这样的,java5.0以后出现了一个对象池的概念,Java虚拟机在启动的时候会实例化9个对象池,这9个对象池分别用来存储8种基本类型的包装类对象和String对象,String str = "abc"这样写是从对象池中取abc的对象,如果对象池中已经有了abc这个对象,那么就不会从新给它分配新的空间了,如果这样写String str = new String("abc");就会分配新的空间 参考技术B 字符串常量本来就是一个匿名对象,string
s="哈哈"这条语句的结果是,将“哈哈”的引用,也就是在字符串常量池中的首地址赋值给s,string
s=new
string("哈哈");这句的结果是:首先会在字符串常量池中产生"哈哈"这个对像,然后再用"哈哈"这个已经存在的对象,去构造s这个对象,这样就会产生两个对象,这似乎并不是我们要的结果
参考技术C 这个你可以用一个小程序自己测试下,印象更深刻~

以上是关于java中关于map值修改问你的主要内容,如果未能解决你的问题,请参考以下文章

Java中关于String对象引用的问题?

java中的map怎么根据key值修改value值?

Java中关于 ArrayList 和 Map 的常用遍历方法 (学习笔记,便于以后查询)

JQuery中关于attr()prop()两者之间的区别

Ruby on RailsModel中关于保存之前的原值和修改状态

Java中关于string的些许问题及解析