歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java中的值傳遞和引用傳遞

Java中的值傳遞和引用傳遞

日期:2017/3/1 10:13:04   编辑:Linux編程

當一個變量最為一個參數傳入方法內部的時候,會有兩種不同的傳遞方式:值傳遞和引用傳遞。

值傳遞的特點:不管方法內部對傳進去的參數作任何改變,也不會影響方法外部的變量的值

引用傳遞的特點:方法內部對傳進去的參數作的改變也會影響方法外部的變量的值

那麼哪些是值傳遞,哪些是引用傳遞呢?

  1. 基本類型(8種)的傳遞都是值傳遞
  2. 引用類型(除String外)都是引用傳遞
  3. Strng比較特殊,它雖然是引用類型,但是卻是值傳遞

通過一下例子來理解:

Student.java

  1. package com.tianjf;
  2. public class Student {
  3. private String name;
  4. public Student(String name) {
  5. super();
  6. this.name = name;
  7. }
  8. public String getName() {
  9. return name;
  10. }
  11. public void setName(String name) {
  12. this.name = name;
  13. }
  14. @Override
  15. public String toString() {
  16. return name;
  17. }
  18. }
Test.java
  1. package com.tianjf;
  2. public class Test {
  3. private static void changeInt(int i) {
  4. i = 1;
  5. }
  6. private static void changeStudent(Student student) {
  7. student.setName("李四");
  8. }
  9. private static void changeString(String str) {
  10. str = "456";
  11. }
  12. public static void main(String[] args) {
  13. int i = 0;
  14. String str = "123";
  15. Student student = new Student("張三");
  16. System.out.println("Before change:\ni:" + i + "\n" + "student:" + student.toString() + "\n" + "str:" + str);
  17. changeInt(i);
  18. changeStudent(student);
  19. changeString(str);
  20. System.out.println("After change:\ni:" + i + "\n" + "student:" + student.toString() + "\n" + "str:" + str);
  21. }
  22. }
運行結果:

Before change:
i:0
student:張三
str:123
After change:
i:0
student:李四
str:123

從運行結果可以看出,int和String類型的值經過change方法後沒有變,而student的值變了。

Copyright © Linux教程網 All Rights Reserved