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  阅读(365)  评论(0)    收藏  举报