Java中的值传递和传递
4369 点击·0 回帖
![]() | ![]() | |
![]() | 当一个变量最为一个参数传入方法内部的时候,会有两种不同的传递方式:值传递和传递。 值传递的特点:不管方法内部对传进去的参数作任何改变,也不会影响方法外部的变量的值 传递的特点:方法内部对传进去的参数作的改变也会影响方法外部的变量的值 那么哪些是值传递,哪些是传递呢? 基本类型(8种)的传递都是值传递 类型(除String外)都是传递 Strng比较特殊,它虽然是类型,但是却是值传递 通过一下例子来理解: Student.java [java] package com.tianjf; public class Student { private String name; public Student(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return name; } } package com.tianjf; public class Student { private String name; public Student(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return name; } } Test.java [java] package com.tianjf; public class Test { private static void changeInt(int i) { i = 1; } private static void changeStudent(Student student) { student.setName("李四"); } private static void changeString(String str) { str = "456"; } public static void main(String[] args) { int i = 0; String str = "123"; Student student = new Student("张三"); System.out.println("Before change:\ni:" + i + "\n" + "student:" + student.toString() + "\n" + "str:" + str); changeInt(i); changeStudent(student); changeString(str); System.out.println("After change:\ni:" + i + "\n" + "student:" + student.toString() + "\n" + "str:" + str); } } package com.tianjf; public class Test { private static void changeInt(int i) { i = 1; } private static void changeStudent(Student student) { student.setName("李四"); } private static void changeString(String str) { str = "456"; } public static void main(String[] args) { int i = 0; String str = "123"; Student student = new Student("张三"); System.out.println("Before change:\ni:" + i + "\n" + "student:" + student.toString() + "\n" + "str:" + str); changeInt(i); changeStudent(student); changeString(str); System.out.println("After change:\ni:" + i + "\n" + "student:" + student.toString() + "\n" + "str:" + str); } } 运行结果: www.atcpu.com Before change: i:0 student:张三 str:123 After change: i:0 student:李四 str:123 从运行结果可以看出,int和String类型的值经过change方法后没有变,而student的值变了。 作者:tianjf0514 | |
![]() | ![]() |