当前位置:天才代写 > tutorial > JAVA 教程 > java的值通报、地点通报、引用通报

java的值通报、地点通报、引用通报

2017-11-01 08:00 星期三 所属: JAVA 教程 浏览:554

一直来以为对值通报和地点通报相识的很清楚,适才在开源中国上看到一篇帖子先容了java中的值通报和地点通报,看完后感觉颇深。下边总结下以便更容易领略。

凭据以前的领略,java中根基数据范例是值通报,工具是地点(引用)通报。给各人看个例子:

public class ObjectTrans {  
      
    public static void main(String[] args) {  
        String name = "123";  
        SChange(name);  
        System.out.println(name);  
    }  
          
    public static void SChange (String str) {     
        str = "234";  
    }   
      
}

各人思考下,这个例子输出的功效应该是123呢照旧234呢?功效是123。why?一句话表达:工具也是值通报,只是把这个工具的引用copy了一份。

其实java原来就是值通报,没有c++那样的指针通报,分步阐明下上边的代码:

1、name = "123"

2、挪用SChange  str 和 name 配合指向 “123”(拷贝name的引用赋给str)

3、str 从头赋值并指向“234”

4、name指向稳定照旧“123”

下边看别的一段代码:

public class ObjectTrans {  
      
    public static void main(String[] args) {  
        StringBuilder name = new StringBuilder("123");  
        SChange(name);  
        System.out.println(name);  
    }  
          
    public static void SChange (StringBuilder str) {     
        //str = "234";  
        str.append("234");  
    }   
      
}

那么这段代码输出的功效应该是什么呢?谜底是123234,why?同样分步阐明:

1、name = "123"

2、挪用SChange  str 和 name 配合指向 “123”(拷贝name的引用赋给str)

3、改变所指向工具的值"123"+"234"

4、引用没变只是值变了,所以功效为123234

假如不大白请留言,本身好好阐明下。。。请记着一句话:java只有值通报。

 

    关键字:

天才代写-代写联系方式