java 值传递与引用传递的3种情况

来源:互联网 发布:languages软件 编辑:程序博客网 时间:2024/06/05 20:18
        偶然又想到值传递与引用传递。 其实这东西分析下内存变化就不会搞错。 基础数据类型都是值传递,而引用类型都是引用传递。 为什么是3种情况,因为引用传递中的一小部分稍特殊了一点点。 

基础数据类型(4类8种):

    整型:byte,short,int,long
    浮点型:float,double
    字符型:char
    布尔型:boolean

引用类型:   数组,类,  接口

public class ValueAndQuoteTransmit {public static void main(String[] args){int value = 11;//值传递String str = "yinyong";//引用传递Dog dog = new Dog();//引用传递dog.setName("旺财");dog.setDesc("walk.");WalkDog(dog, str, value);System.out.println("B str="+str+" ,value="+value+" ,"+dog.toString());}static void WalkDog(Dog dog,String str,int value){System.out.println("A str="+str+" ,value="+value+" ,"+dog.toString());value = 22;/** * 引用传递中特殊一点的情况:eg:String类是 final的,并且未提供改变对象内容的方法. * 修改, 其实是把引用指向新的对象(等同于dog = new Dog()这种改变)。若误理解为是改变原对象的内容就错了 */str = "引用";//主线程和WalkDog方法中的引用指向的是同一个对象,修改的只是对象的内容dog.setName("旺旺");dog.setDesc("遛狗狗。");}//结果://A str=yinyong ,value=11 ,Dog [name=旺财, desc=walk.]//B str=yinyong ,value=11 ,Dog [name=旺旺, desc=遛狗狗。]}


 
    


原创粉丝点击