a和b有什么区别?? 就象这样:String a = new String("hello") ;String b = "hello";a,b当然是一样的值,但却是两个不同的对象! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你用下边的语句运行看看就明白了.if (a==b) System.out.print("a=b");if (a.equals(b)) System.out.print("a.equals(b)"); 请看 System 的 static String getProperty(String key) 方法,返回的是String 这么说吧,你买了两支一模一样的圆珠笔,它们是不是相同呢?他们是不是就是一支笔呢?所以,a.equals(b), 因为他们的确一模一样。所以,a != b,因为他们本来就是两支笔。一支笔用完了,另一支笔还是满的。当年古龙就是这样对我解释的。 a是一个新建String实例,他的值和System.getProperty("java.version")一样,但是不是System.getProperty("java.version").b就是System.getProperty("java.version") 仔细想了一下,a和b在使用上没有区别,a和b都是值和System.getProperty("java.version")相等的String实例,都不是真正内存中的属性。但是a生成时的效率比b低,因为在System.getProperty("java.version")时已经new了一个实例,再次new的时候又生成一遍实例。 好像对于String对象,由于其不可变性,虚拟机在生成这样的对象时,都是使用同一个地址即a和b不但内容相同,而且地址也一样 if (a==b) System.out.print("a=b");if (a.equals(b)) System.out.print("a.equals(b)");可以看出他们的不同,同样的值但不同的内存地址。同时java虚拟机的垃圾回收时也视其不同,当a或b被别的字串负值后,可能就被当作垃圾回收了,你可以通过这个方式发觉他们的不同。 小弟在这里先谢大家了,呵呵,看来要加点分啊,我提的问题,a和b的用法是一样的了,这个大家确定了啊,说到地址,是不是象c++里分配动态内存的那样呢,用new分配的在栈里,a和b的内存空间根本就不一样啊,!!!那就顺便大家给点建议了,有什么好书推荐啊,我需要大量java code啊,大家知道哪里有吗? "=="表示两个对象完全相同".equals"仅仅表示值相同 to:htl(海豚) ( )真的是这样吗?也要看具体每个类里面是怎样实现的吧 错了,不一样的你看看, <Effective Java> 就知道的主要是 String 是一个不变类,为了提高效率,正常创建的 相同的 String 都是同一个对象,但String a = new String( System.getProperty("java.version")) ; String b = System.getProperty("java.version") ;这样就不是同一个对象了. 那在定义和使用的时候有什么不一样呢,要注意什么呢!!!java是值传递的,那地址对java来说有什么意义呢,我对垃圾回收不怎么熟悉啊,望大家说说了, 哈哈,java 是传值的,只是对于基本类型来说的.对于,"类",全部都是传地址的!!!!!!!!!不信你可以自己写一个程序来试试!!!! 求一个设计的问题 java正则匹配问题 新手求助! JAVA如何得到当前日期是星期几?求JAVA代码 java调用exe文件的奇怪问题~~高手来解答!!! jTextField的文字怎么不停的转换,直到按钮开始,停止,再按又开始 想要源代码的人和我联系 线程的实时控制问题 我想问一下java的应用程序可不可以被做成exe文件来执行 请问Tomcat服务器的根目录在哪里,为什么总说找不到文件呢??? 错误信息:'void' type not allowed here!! 帮我看看 什么是多线程啊?
if (a.equals(b)) System.out.print("a.equals(b)");
所以,a.equals(b), 因为他们的确一模一样。
所以,a != b,因为他们本来就是两支笔。一支笔用完了,另一支笔还是满的。
当年古龙就是这样对我解释的。
b就是System.getProperty("java.version")
即a和b不但内容相同,而且地址也一样
if (a.equals(b)) System.out.print("a.equals(b)");
可以看出他们的不同,同样的值但不同的内存地址。
同时java虚拟机的垃圾回收时也视其不同,当a或b被别的字串负值后,可能就被当作垃圾回收了,你可以通过这个方式发觉他们的不同。
我提的问题,a和b的用法是一样的了,这个大家确定了啊,说到地址,是不是象c++里分配动态
内存的那样呢,用new分配的在栈里,a和b的内存空间根本就不一样啊,!!!
那就顺便大家给点建议了,有什么好书推荐啊,我需要大量java code啊,大家知道哪里有吗?
".equals"仅仅表示值相同
htl(海豚) ( )
真的是这样吗?
也要看具体每个类里面是怎样实现的吧
String a = new String( System.getProperty("java.version")) ;
String b = System.getProperty("java.version") ;
这样就不是同一个对象了.
java是值传递的,那地址对java来说有什么意义呢,我对垃圾回收不怎么熟悉啊,望大家
说说了,