如何学好java

如何学好java,其实很简单,只要用心体会,慢慢积累!
posts - 106, comments - 7, trackbacks - 0, articles - 3
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

java值传递和地址传递

Posted on 2011-05-03 16:44 哈希 阅读(270) 评论(0)  编辑  收藏 所属分类: java 代码
public class StringBufferTest
{
public  void operater(StringBuffer x,StringBuffer y)
{
//string.append(String)字符串添加函数
x.append(y);
y=x;
System.out.println("operater输出:"+"a="+x+",b="+y);
}
public static void main(String [] args)
{
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
StringBufferTest test=new StringBufferTest();
test.operater(a, b);
System.out.println("main输出:a="+a + ",b=" +b);
}
java的引用类型是地址传递,可是在operater中和main中输出结果为什么不一样呢?


在main中 a => new StringBuffer("A"); b => new StringBuffer("B"); 在test.operater(a, b);这句,传入的是两个引用 在operater方法中,b被重新赋值了,即引用地址改变了 ================ 补充一下:java中任何一个对象变量只是指向创建的对象的一个引用 例如 String a = "KKK"; 那么 “KKK”是创建的String对象, a 则是这个对象的引用,或者说a保存对象“KKK”在内存中的地址

“==”与“Equals”区别

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。 ==比较的是2个对象的地址,而equals比较的是2个对象的内容。 显然,当equals为true时,==不一定为true;

只有注册用户登录后才能发表评论。


网站导航: