黑马程序员——Java函数/调用

-------  android培训 java培训 、期待与您交流! ----------

Java函数/调用

  •         所谓函数调用就是计算机编或运行时,使用某个函数来完成相关命令。
  •         函数调用一般形式:在程序中通过对函数的调用来执行函数体,其过程与其它语言的子程序调用相似。
下面通过一个实例来了解函数的调用:

 工具函数:
class ArrayTool
{
	private ArrayTool(){}			//私有化
	public static int getMax(int[] arr)	//加入static,静态,用类名直接调用。
	{
		int max=0;
		for(int x=1;x<arr.length;x++)
		{
			if(arr[x]>arr[max])
			max=x;
		}
		return arr[max];
	}
	public static int getMin(int[] arr)		
	{
		int min=0;
		for(int x=1;x<arr.length;x++)
		{
			if(arr[x]<arr[min])
			min=x;
		}
		return arr[min];
	}
	public static void selectSort(int[] arr)	//选择排序
	{
		for(int x=0;x<arr.length-1;x++)
		{
			for(int y=x+1;y<arr.length;y++)
			{
				if(arr[x]>arr[y])
				{
					swap(arr,x,y);
				}
			}
		}
	}
	public static void bubbleSort(int[] arr)	//冒泡排序
	{
		for(int x=0;x<arr.length-1;x++)
		{
			for(int y=0;y<arr.length-x-1;y++)
			{
				if(arr[y]>arr[y+1])
				{
					swap(arr,y,y+1);
				}
			}
		}
	}
	private static void swap(int[] arr,int a,int b)		//换位。私有化
	{
		int temp=arr[a];
		arr[a]=arr[b];
		arr[b]=temp;
	}
	public static void printArray(int[] arr)	//打印
	{
		System.out.print("[");
		for(int x=0;x<arr.length;x++)
		{
			if(x!=arr.length-1)
				System.out.print(arr[x]+",");
			else
				System.out.println(arr[x]+"]");
		}
	}
}




主函数:
class ArrayToolDemo
{
	public static void main(String[] args)
	{
		int[] arr={5,56,4,8,49,34,12};
			
		int max=ArrayTool.getMax(arr);	//当在工具类中,即class ArrayTool中使用了static后,就不用再这建立对象(即ArrayTool tool=new ArrayTool();)

		System.out.println("max="+max);

	      /*ArrayTool tool=new ArrayTool();//jvm可以去找该文件所在的文件夹里的ArrayTool.java并先编译它,然后在编译自身。
			
		int max=tool.getMax(arr);
		System.out.println("max="+max);//调用tool功能函数,获取最大值

		int min=tool.getMin(arr);
		System.out.println("min="+min);//调用tool功能函数,获取最小值

		tool.printArray(arr);//排序前
		tool.selectSort(arr);//
		tool.printArray(arr);//排序后	
	      */
	}
}







  • 每个应用程序中都有共性的功能,可以将这些功能抽取,独立封装,以便复用。
class ArrayDemo
{
	public static int getMax(int[] arr)	//加入static,用类名直接调用。
	{
		int max=0;
		for(int x=1;x<arr.length;x++)
		{
			if(arr[x]>arr[max])
			max=x;
		}
		return rr[max];
	}
	public static int getMax(int[] arr)	//加入static,用类名直接调用。		
	{
		int min=0;
		for(int x=1;x<arr.length;x++)
		{
			if(arr[x]<arr[min])
			max=x;
		}
		return arr[min];
	}
	public static void selectSort(int[] arr)	//加入static,用类名直接调用。
	{
		for(int x=0;x<arr.length-1;x++)
		{
			for(int y=x+1;y<arr.length;y++)
			{
				if(arr[x]>arr[y])
				{
					swap(arr,x,y);
				}
			}
		}
	}
	public static void bubbleSort(int[] arr)	//加入static,用类名直接调用。
	{
		for(int x=0;x<arr.length-1;x++)
		{
			for(int y=0;y<arr.length-x-1;y++)
			{
				if(arr[y]>arr[y+1])
				{
					swap(arr,y,y+1);
				}
			}
		}
	}
	public static void swap(in[] arr,int a,int b)	//加入static,用类名直接调用。
	{
		int temp=arr[a];
		arr[a]=arr[b];
		arr[b]=temp;
	}
}

	
class ArrayToolDemo
{
	int[] arr={5,56,4,8,49,34,12};
	ArrayTool tool=new ArrayTool();
	int max=tool.getMax(arr);
	System.out.println("max="+max);
}


虽然可以通过建立ArrayTool的对象使用这些工具方法,对数组进行操作。

问题:  对象时用于封装数据的,可是ArrayTool对象并未封装特有数据;
操作数组的每一个方法堵没有用到ArrayTool对象中的特有数据。
因此,为了让程序严谨,不需要创建ArrayTool对象,可以将ArrayTool中的方法都定义成static,直接通过类名调用即可。

将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象。
为了更为严谨,强制让该类不能建立对象,可将构造函数私有化实现。

如果ArrayTool.java文件和ArrayToolDemo.java文件不在同一个文件夹下。
就使用:set classpath=.;文件存放盘:\文件夹名来寻找。


例如set classpath.;c:\myclass。“.”表示先在当前目录找,找不到再转移到c盘下myclass文件夹里找。


-------  android培训 java培训 、期待与您交流! ----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值