如何根据字符串值动态给JAVA成员变量赋值
2个回答
2016-11-15 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
可以用new一个字符串,字符串本身就比较特殊,根据创建方式不同,占用的内存区域也不同。
如果用String str = new String("acb");那么就会再堆内存中分配一个空间。如果按你上面那种赋值,那么当a="afdf"时候,就会栈中找值等于"dfdf"的字符串,如果找到了,就将a的引用指向它,如果没有找到就开通新的内存,让后a指向它,执行到b=a;时同上,当然这个时候栈中必然有"dfdf"所以不会开辟新的内存空间,而是将b的引用直接指向"dfdf"所占的内存地址。
栈内存中的值可以共享,而堆内存不同,因为堆内存是在编译的时候才会分配的,属于动态的,因为事先也不知道,它会占用多大内存,所以不好分配。
如果用String str = new String("acb");那么就会再堆内存中分配一个空间。如果按你上面那种赋值,那么当a="afdf"时候,就会栈中找值等于"dfdf"的字符串,如果找到了,就将a的引用指向它,如果没有找到就开通新的内存,让后a指向它,执行到b=a;时同上,当然这个时候栈中必然有"dfdf"所以不会开辟新的内存空间,而是将b的引用直接指向"dfdf"所占的内存地址。
栈内存中的值可以共享,而堆内存不同,因为堆内存是在编译的时候才会分配的,属于动态的,因为事先也不知道,它会占用多大内存,所以不好分配。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询