Skip to content

Java SE - Summary

Java基础

Java参数是值传递还是引用传递

参数是基本类型时:按值传递(在方法内部修改值不会影响外部)

参数是引用类型时:按引用传递(在方法内部修改对象值可以影响外部)

  • 正常来说引用传递的值在方法中都可以修改,但是某些特殊的类型是不会被修改的,例如包装类,String

正常引用传递:

java
@Test
public void testUser(){
  User user = new User(1,"id","name");
  changeUser(user);
  System.out.println(user.getId()); // 输出2
}

public void changeUser(User user){
  user.setId(2);
  user = new User(3,"id","name"); // 这种只会修改局部变量的引用,不会影响外部user的引用
}

特殊的类型的引用传递:

java
    @Test
    public void testString(){
        String a = "a";
        changeString(a);
        System.out.println(a); // 输出a
    }

    public void changeString(String a){
        a = "b";
    }
java
    @Test
    public void testInteger(){
        Integer a = 1;
        changeInteger(a);
        System.out.println(a); // 输出1
    }

    public void changeInteger(Integer a){
        a = 2;
    }

因为他们存储的值实际都是用final修饰的,都是不可变的,引用地址都不会被修改