java中Double类和String类及自定义类的区别?

安然 2012-12-07 03:35:25
书上说String类对象是常量,不可改变,因此要改变字符串中
某个字符的内容(不改变长度)需要重新开辟一段空间并把该段空
间的引用赋给String引用变量。我想请问大家的是:
对于Double、Integer这样的类型也是一样的吗?
Double和double到底是什么关系呢?
如:Double a; double b; a=b;
是这句话隐含了什么信息,是将b的引用赋给a吗(但是double应该没引用值呀)?
而且对于Double a=new Double(3.0); a=4.3;
用分步调试发现 a 原先引用的Double对象不见了,
而是a的引用id改变了,也就是说a指向了另一块内存?
按理来说要指向另一段内存应该是Double a=new Double(3.0);
Double b=new Double(4.0); a=b;这中形式的啊?
如果Double类对象不是常量,
那怎么改变对象的值,而不是引用的值呢?
本人新手,请各位赐教啊。
...全文
543 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
华.Z 2013-08-28
  • 打赏
  • 举报
回复
司机 2012-12-10
  • 打赏
  • 举报
回复
引用 6 楼 inkalsee 的回复:
引用 5 楼 tai8feng 的回复: public Object{ private int a = 0; public Object(int a) { this.a = a; } } public static void main(String[] avg) { Object obj = new Object(1……
Double a=new Double(0.0); a = 4.3; 你这就好比Double a = 4.3; 再给你一段代码: List<Double> list = new ArrayList<Double>(); Double a = new Double(0.0); //a = 4.3; list.add(a); Double b = list.get(0); b = 4.3; System.out.println(a+" "+list.get(0) +" "+b); 打印出来会是0.0 0.0 4.3
龙四 2012-12-09
  • 打赏
  • 举报
回复
如果使用jdk1.4编译,就不会有这么多疑问了 如果使用的是比1.4高的jdk,使用如下方式编译,也不会出现这么多疑问: javac -source 1.4 Test.java 或许楼主想要看这篇文章:http://www.ticmy.com/?p=110
安然 2012-12-09
  • 打赏
  • 举报
回复
引用 5 楼 tai8feng 的回复:
public Object{ private int a = 0; public Object(int a) { this.a = a; } } public static void main(String[] avg) { Object obj = new Object(10); } ……
那Float这些封装类加了final关键字吗,如果有Double a=new Double(0.0); 那执行a=4.3;时是改变了a的引用还是改变了a引用对象的值?
司机 2012-12-09
  • 打赏
  • 举报
回复
public Object{ private int a = 0; public Object(int a) { this.a = a; } } public static void main(String[] avg) { Object obj = new Object(10); } 这样就是改变对象成员变量a的值。 java中存在基础数据类型如:int、long 、float、double等。这些基础类型占用空间少。 其对应封装类型为:Integer、Long、Float、Double。只有对象才能引用传递。 String类型本身就是一个对象因为其对象被加了final关键字所以对象不可改变。
安然 2012-12-09
  • 打赏
  • 举报
回复
唉,java大神哪儿去啦。
iminright 2012-12-07
  • 打赏
  • 举报
回复
java中一切都是对象,但是int,double等几种数据类型又不是对象,所以有了Integer,Double等对象 至于Double a; double b; a=b;这个用到了java自动装箱机制 估计就是a=new Double(b)了,个人猜测,所以a的引用变了 至于改变对象的值而不是引用,根据上面的猜测,或许还真是不能改变值,只能改变引用呢。。 仅仅是猜测,求大神科普
zqfddqr 2012-12-07
  • 打赏
  • 举报
回复
string类型的存储方式和别的不同 你百度搜索一下就行 其他的对象不是这样的直接修改就行.
安然 2012-12-07
  • 打赏
  • 举报
回复
各位大神支个招啊,自己顶个。

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧