参数的传递:
和其他变编程语言一样,在定义方法时,就会有参数的传递,方法参数包括圆括号内的常量值、变量表达式、常量。
在定义方法时,方法中的参数成为形式参数(形参),是用来反映参数的类型及其个数的;当我们调用该方法时,
这时的参数成为实际参数(实参)。通过参数的传递,可以将变量的值传递给方法内部进行处理。
Java中参数的传递有如下两种:
1.值传递:
基本类型参数所传递的参数都是基本数据类型,包括数值型,布尔型等。在这种情况下,所有参数的传递都采用值传递的方式。
也就是说,当传递一个参数到方法时,方法获取的只是该参数的一个拷贝,因此方法不会改变参数变量的值,只是使用该变量的值。
2.址传递:
对象引用型参数如果参数传递的是对象引用型参数(即一个对象),则方法获取的是对象的内存地址,因此方法可以改变该对象
中的属性,但是不能改变对象本身。
这只是Java语言特点中内存管理机制造成的。个人感觉通过下边的代码,对于我们初学者先通过理解后记忆即可,后续随着知识的积累,再理解...- public class Demo
- {
- public static void add(int a, int b)
- {
- int c = a + b;
- System.out.println("c="+c);
- a = c;
-
- }
- public static void main(String[] args)
- {
- //定义并初始化a,b
- int a = 10;
- int b = 20;
-
- //调用方法
- add(a,b);
- System.out.println("a="+a);
- }
- }
复制代码
打印结果:
c=30
a=10
由此可见,传递的参数是基本变量类型时,方法是不能改变参数变量的值的。- public class Demo
- {
- public static void change(String str, char ch[])
- {
- str = "Changed";
- ch[0] = 'C';//将字符‘C’赋值给字符数组中第一个元素
- }
- public static void main(String[] args)
- {
- //创建并初始化字符串对象,及字符数组对象
- String s = new String("World");
- char[] ch = {'H','e','l','l','o'};
-
- System.out.println(s);//打印原始字符串
- getCharArray(ch);//打印原始字符串中的元素
-
- change(s,ch);//调用change()方法
- System.out.println(s);//打印处理后的字符串
- getCharArray(ch);//打印处理后字符串中的元素
- }
- public static void getCharArray(char ch[])
- {
- for(int i=0; i<ch.length; i++)
- {
- System.out.print(ch[i]);
-
- }
- System.out.println();
- }
- }
复制代码
打印结果:
World
Hello
World
Cello
由此可见,使用字符串对象和字符数组对象作为传递的参数,
方法调用后并不能改变字符串对象,但是可以改变字符数组对象变量的内容。
|