Java6 面向对象编程2————方法的可变参数、方法的参数传递

书接上回:介绍完方法、对象的基本概念后来具体看一看方法和对象之间的值传递问题。

方法的可变参数

①采用数组形参来定义方法

public static void test(int a ,String[] books);
ps:如果没有参数要定义一个空数组或者是null

public class Personn //数组法
{
	public void printInfo(String[] args)//定义一个方法,形参是一个字符串数组
	{
		for(int i=0;i<args.length;i++)
			System.out.println(args[i]);//将输入的数组一一打印出来。
	}
}
public class text3 //检验
{
	public static void main(String[] args) 
	{
		Personn nn=new Personn();//声明一个Personn的对象
		String[] ss=new String[]{"caizi","7952","火星","159263"};//建立一个String类型的数组
		nn.printInfo(ss);//引用nn对象的方法,实参参就是字符串数组ss。没有参数要填null
	}
}
结果:
caizi
7952
火星
159263

②以可变个数形参来定义方法

==public static void test(int a ,String…books);==不可变的放前面,可变的放最后。
引用时不需要创建数组,会有一定不同
ps:如果没有参数可以不填

public class Personn //...法
{

	public void printInfo1(String... args)//使用Java特有的... 方式达成可变参数的输出,内部还是用迭代的办法。
	{
		for(int i=0;i<args.length;i++)
			System.out.println(args[i]);//将输入的数组一一打印出来。
	}
}
public class text3 //检验
{
	public static void main(String[] args) 
	{
		Personn nn=new Personn();//声明一个Personn的对象
		String[] ss=new String[]{"caizi","7952","火星","159263"};//建立一个String类型的数组
		nn.printInfo1("八戒","八戒","你真可爱");//需要特别注意的用法
		nn.printInfo1(ss);//普通传递数组
	}
}
结果:
八戒
八戒
你真可爱
caizi
7952
火星
159263
  • 总结:
    1.可变参数:方法参数部分指定类型的参数个数是可变多个
    2.声明方式:方法名(参数的类型名…参数名)
    或者方法名(参数类型名[ ] 参数名)
    3.可变参数方法的使用与方法参数部分使用数组是一致的
    4.方法的参数部分有可变形参,需要放在形参声明的最后

方法的参数传递

方法,必须有其所在类或对象调用才有意义
若方法含有参数:

  • 形参:方法声明时的参数
  • 实参:方法调用时实际传给形参的参数值

Java虚拟机的存储原理

Java的实参值如何传入方法呢?
Java里方法的参数传递方式只有一种:值传递。
即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。
在这里插入图片描述

  • 基本数据类型在参数的传递过程中,就是将实参的值赋给形参。
    在这里插入图片描述
  • 对象在参数传递中传递的是地址(就是将heap中的值传递了),改变了对象的“值”就是将heap中的值给改了,没有赋值给形参。(这个跟C语言的指针有点类似)
    在这里插入图片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章