java day04第四课函数(方法)及数组

函数和数组

一、函数

1、函数的定义

1.1 函数就是定义在类种的具有特定功能的一段独立小程序,函数也称之为方法。	
1.2 函数的格式1:修饰符  返回值类型 函数名(参数类型 参数1,参数类型 参数2){
	执行语句
	return 返回值;
}
返回值类型:函数运行后的结果的数据类型。
参数类型:是参数的数据类型。
参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
return:用于结束函数。
返回值:返回运行的结果值给我们的调用此方法的人。
1.3 函数的格式2:修饰符  void 函数名(参数类型 参数1,参数类型 参数2){
	执行语句
	return 返回值;
}
 当函数运算后,没有具体的返回值时,这时返回类型用一个特殊的关键字来标识。该关键字就是void,void代表的是函数没有返回值。我们就可以省略掉return,如果加上也没错,不写的话,程序在编译的时候自动给我们加上。

2、函数的特点

2.1 定义函数可以讲功能代码进行封装。
2.2 便于对该功能进行复用。
2.3 函数只有被调用才会被执行。
2.4 函数的出现提高了代码的复用性。

注意:

(1)、函数中只能调用函数,不可以再函数内部定义函数。
(2)、定义函数时,函数的结果应该返回给调用者,交由调用者处理。

3、函数的应用

3.1如何定义一个函数呢?

(1)、既然函数是一个独立的功能,那么该功能的运算结果是什么先要明确。(因为这事在明确函数的返回类型)
(2)、在明确定义该功能的过程中是否需要位置的内容参与运算。(因为这是在明确函数的参数列表(参数的类型和参数的个数))。

4、函数的重载(overload)

4.1 重载的概念

在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。

4.2 重载的特点

与返回类型无关,只看参数列表

4.3 重载的好处

方便阅读,优化了程序设计

二、数组

一维数组

概念

同一种类型数据的集合,其实数组就是一个容器。

数组的好处

可以自动给数组中的元素从0开始变好,方便操作这些元素。

格式1

元素类型[]  数组名 = new 元素类型[元素个数或者数组长度];
示例:
	int[] arr = new int[5]; 
    arr[0] = 1;
    arr[1] = 2;
    System.out.println("arr[0]的值为:"+arr[0]);
    System.out.println("arr[1]的值为:"+arr[1]);
    System.out.println("arr[2]的值为:"+arr[2]);
    System.out.println("arr[3]的值为:"+arr[3]);
    System.out.println("arr[4]的值为:"+arr[4]);
//	System.out.println("arr[5]的值为:"+arr[5]);//这里
会报错,因为这里访问到了数组不存在的角标上;

格式2

元素类型[] 数组名 = new 元素类型[]{元素,元素,......};
int[] arr = new int[]{3,5,1,7};
int[] arr1 = {1,3,5,4,7};

二维数组

格式1

int[][] arr = new int[4][5];
注释:
定义了一个叫做arr的二维数组;
二维数组中有4个一维数组;
每一个一维数组里面有5个元素;
给第一个一维数组里面的角标为1的赋值为3的写法是:arr[0][1] = 3;

格式2

int[][] arr = new int[3][];
注释:
二维数组中有3个一维数组
每个一维数组都是默认的为null;
我们可以对三个一维数组进行初始化;
arr[0] = new int[1];
arr[1] = new int[2];
arr[2] = new int[3];

循环遍历数组

	int[] arr = new int[8];
	//循环遍历出数组里面的元素 数组中有一个属性可以
	//直接获取到数组元素的个数(.length).使用方式:
	数组名.length;	
	System.out.print("{");
	for(int i = 0;i < arr.length;i++){
		if(i != arr.length-1){
		
		 System.out.print(arr[i]+",");
		
		}else{
	
		System.out.print(arr[i]+"}");	
		
		}
	}	
//利用java自带方法输出	
System.out.println(Arrays.toString(arr));

获取数组的最值(最大值和最小值)

思路:
1、获取最值需要进行比较,每一次比较都会有一个较大的值,因为该
值不确定,需要一个变量进行临储。
2、让数组中的每一个元素都和这个变量中的值进行比较,如果大于了
变量中的值,就用该变量记录较大值。
3、当所有的元素都比较完成,那么该变量中存储的就是数组中最大值
实现:
//最大值
int arr[] = {1,2,3,4,5};
int max = arr[0];
for(int i = 0;i < arr.length;i++){
	if(arr[i] > max){
	 	max = arr[i];
	}
}
System.out.println("数组arr最大值为:"+max);
//最小值
int min = arr[0];
for(int i = 0;i < arr.length;i++){
	if(arr[i] < min){
	 	max = arr[i];
	}
}
System.out.println("数组arr最小值为:"+min);

选择排序

//选择排序是依次和后面的元素进行比较,如从大到小排序,第一次循环结束比较得到最小值
int arr[] = {1,2,3,4,5};
for(int i = 0;i < arr.length-1;i++){
	for(int a = i+1;a<arr.length;a++){
	   if(arr[i] > arr[a]){//判断条件
                     int temp = arr[a];//定义一个临时变量来存储,方便交换
	        arr[a] = arr[i];
	        arr[i] = temp;
		}
	}
}

System.out.print("{");
	for(int b = 0;b < arr.length;b++){
		if(b != arr.length-1){
		 System.out.print(arr[b]+",");
		}else{
		System.out.print(arr[b]+"}");	
		}
	}	

冒泡排序

//冒泡排序是两两进行比较,如从大到小排序,第一次外层循环结束后得到的是一个最小值
int arr[] = {1,2,3,4,5};
for(int i = 0;i < arr.length-1;i++){
	for(int a = 0;a<arr.length-1-i;a++){//-i是让每一次
						//比较的元素减少,-1是避免角标越界
		if(arr[a] > arr[a+1]){
			int temp = arr[a];//同选择排序一样交换,原理和水杯换水一样
			arr[a] = arr[a+1];
			arr[a+1] = temp;
		}
	}
}

System.out.print("{");
	for(int b = 0;b < arr.length;b++){
		if(b !=arr.length-1){
		 System.out.print(arr[b]+",");
		}else{
		System.out.print(arr[b]+"}");	
		}
	}	

封装方法

从我们的选择排序和冒泡排序里我们可以看到有很多相同的代码,我们
可以把这些相同的代码提取出来封装为方法;比如我们的判断交换和遍
历输出:
抽取1:
public static void PanDuan(int[] arr,int a,int b)
{
	if(arr[a] > arr[b]){
		int temp = arr[a];
		arr[a] = arr[b];
		arr[b] = temp;
	}
}
抽取2:
 public static void BianLi(){
 	
 	System.out.print("{");
	for(int b = 0;b < arr.length;b++){
		if(b != arr.length-1){
		 System.out.print(arr[b]+",");
		}else{
		System.out.print(arr[b]+"}");	
		}
	}	

 
 }
posted @ 2017-04-26 23:06  Mr、chen  阅读(348)  评论(0编辑  收藏  举报