Java教程

java中对象作为参数传递给一个方法,到底是值传递,还是引用传递

本文主要是介绍java中对象作为参数传递给一个方法,到底是值传递,还是引用传递,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

java只有按值传递:基本类型  值传递;引用类型,地址值传递,所以叫值传递。 

基本类型:传递的是值的拷贝,也就是说传递后就互不相关了,也就是说,不过副函数的副本如何变化,主本永远不会被影响。 

引用类型:传递的是引用地址值,有可能会被影响。 (如下)

    如果是对象的话,就是将引用的值复制一份给方法当参数。如果是根据引用把堆里的对象修改了,那么对象真被修改了,

  不过不是被创建赋值给的那个引用修改的,是方法里的一个复制的引用副本给修改的。

String:具有不可变。是特殊的引用类型,其作用跟基本类型一样,传递后不相关。 

例:

public class StudySetAndGet {                                        
    public static void main(String[] args) {                         
        Person person=new Person();                                  
        String bob="Bob";                                            
        person.setName(bob);                                         
        System.out.println(bob.hashCode());                          
        System.out.println(person.getName());                        
        bob="Alice";
     //String:具有不可变。是特殊的引用类型,其作用跟基本类型一样,传递后不相关。                                                  
        System.out.println(bob.hashCode());                          
        System.out.println(person.getName());                        
                                                                     
        String[] fullname=new String[]{"Homer","Simpson"};           
        person.setFullName(fullname);                                
        System.out.println(fullname.hashCode());                     
        System.out.println(person.getFullName());                    
        fullname[0]="Bart";                                          
        //传入的是地址。所以改变内部的值,下面也会跟着改变(hashCode值不变)                      
        System.out.println(fullname.hashCode());                     
        System.out.println(person.getFullName());                    
    }                                                                
}                                                                    
class Person{                                                        
    private String name;                                             
    private String[] fullName;                                       
                                                                     
    public String getName() {                                        
        return name;                                                 
    }                                                                
                                                                     
    public void setName(String name) {                               
        this.name = name;                                            
    }                                                                
                                                                     
    public String getFullName() {                                    
        return this.fullName[0]+" "+this.fullName[1];                
    }                                                                
                                                                     
    public void setFullName(String[] fullName) {                     
        this.fullName = fullName;                                    
    }                                                                
}                                                                    
                                                                     

 

这篇关于java中对象作为参数传递给一个方法,到底是值传递,还是引用传递的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!