说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

小白求解答:Java引用传递问题 还有一个超级超级基础的题

编辑:说三道四文库 发布时间:2018-05-22 04:04
HTML文档下载 WORD文档下载 PDF文档下载
Java 引用传递

public class CallbyReference {

public static void changeStringBuffer(StringBuffer ss1,StringBuffer ss2){
ss1.append(" World");
ss2=ss1;
}

public static void main(String[] args) {
Integer a=1;
Integer b=a;
b++;
System.out.println(a);
System.out.println(b);

StringBuffer s1=new StringBuffer("Hello");
StringBuffer s2=new StringBuffer("Hello");//StringBuffer s2=s1;要换成这句s1 s2输出就都是Hello World 
changeStringBuffer(s1,s2);

System.out.println(s1);
System.out.println(s2);

}

}

问题1.引用传递传递的是地址,形参ss1和s1指向的是同一个地址,这个地址里的字符串加了 World部分,所以s1输出的是Hello World。形参ss2和s2开始都指向的同一个地址,这个地址里的字符串是Hello,但是在调用的方法运行的过程中ss2又指向了ss1指向的地址---这一步和s2没毛线关系,所以s2输出的仍然是Hello。我的理解对吗?

问题2. 
    short x=128;
    byte y=(byte)x;
    强制转换成byte类型取低八位1000,0000我是理解的。不是java里最高位是符号位吗,那y的值书上写的是-1,我写了个System.out.println(y) 输出是-128 。这两个是怎么得出来的?应该是哪个?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘