java中方法参数的一些总结(2)
Java程序设计语言使用值调用。也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何基本数据类
方法参数共有两种类型:
1、基本数据类型(数字、布尔值)。
2、对象引用。
一个方法不可能修改一个基本数据类型的参数。而对象引用作为参数就不同了,对象参数所引用的对象状态是可以被改变的,因为方法
得到的是对象引用的拷贝,对象引用及其他的拷贝同时引用同一个对象。
Java程序设计语言对对象采用的不是引用调用,实际上,对象引用进行的是值传递。
总结Java程序设计语言中,方法参数的使用情况:
1、一个方法不能修改一个基本数据类型的参数(即数值开和布尔值)。
2、一个方法可以改变一个对象参数的状态。
3、一个方法对象参数引用一个新的对象不改变方法外对象的值。
1 package com.action; 2 3 public class Test { 4 5 private static int i = 1; 6 private static String s = "string1"; 7 private static String[] ss = { "11", "bb", "cc" }; 8 private static int j = 10; 9 10 public int ii; 11 static { 12 System.out.println("静态块1"); 13 System.out.println(i); 14 } 15 static { 16 17 System.out.println("静态块2"); 18 } 19 20 /** 21 * @param args 22 */ 23 public static void main(String[] args) { 24 25 Test t = new Test(); 26 t.changeInt(i); 27 System.out.println("傳入int值:" + i + ":::" + j); 28 29 t.changeString(s); 30 System.out.println("傳入String值1:" + s); 31 32 t.changeString2(s); 33 System.out.println("傳入String值2:" + s); 34 35 t.changeStrings(ss); 36 System.out.println("傳入数组:" + ss[0] ); 37 38 t.changeTest(t); 39 System.out.println("傳入對象"+t.i); 40 41 t.ii = 111; 42 t.changeTest1(t); 43 System.out.println(t.ii); 44 } 45 46 public void changeInt(int i) { 47 i = 10; 48 j++; 49 } 50 51 public void changeString(String s) { 52 s = new String("changeString"); 53 } 54 55 public void changeString2(String s) { 56 s.replace("o", "a"); 57 } 58 59 public void changeStrings(String[] s) { 60 s[0] = "numberChange"; 61 } 62 63 public void changeTest(Test t) { 64 Test tt = new Test(); 65 tt.i = 100; 66 t = tt; 67 68 } 69 70 public void changeTest1(Test t) { 71 Test tt = new Test(); 72 tt.ii = 1; 73 t = tt; 74 } 75 76 }
结果:
静态块1
1
静态块2
傳入int值:1:::11
傳入String值1:string1
傳入String值2:string1
傳入数组:numberChange
傳入對象100
111
当传入的是字符串时,传入的是一个对象引用的拷贝,在方法体内部又有了新的字符串对象,在方法体内引用的拷贝最后指向的是这个新的字符串对象,而方法外引用指向的数据没变。
一个方法中可以有多个静态块。