函数和数组
2016-02-26 15:53
309 查看
一,函数(Function)
函数就是定义在类中具有特定功能的一段独立小程序。函数也称为方法
· 函数的格式:
返回值类型:函数运行后的结果的数据类型
参数类型:是形式参数的数据类型
形式参数:是一个变量,用于存储函数时传递给函数的实际参数
实际参数:传递给形式参数的具体数值
reutrn:用于结束函数
返回值:该值会返回给调用者
· 便于对该共嫩进行复用
· 函数只有被调用才会被执行
· 函数的出现提高了代码的复用性
· 对于函数没有具体返回值的情况,返回值类型关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写
· 注意:
a. 函数中只能调用函数,不可以在函数内部定义函数
b. 定义函数时,函数的结果该返回给调用者,交由调用者处理
a. 明确要定义的功能最后的结果是什么?
b. 明确在定义该功能的过程中,是否需要未知内容参与运算
· 示例:
需求:定义一个功能,可以实现两个整数的加法运算
分析:该功能的结果是什么?两个数的和,也就是一个整数(int)。在实现该功能的过程是否有位置内容参与运算?加数和被加数是不确定的(2个参数,int,int)
代码:
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
· 重载的特点:
与返回值无关,只看参数列表。
· 重载示例:
·什么时候用重载?
当定义功能相同,但参与运算的位置内容不同。那么,这时就定义一个函数名称以表示功能,方便阅读。而通过参数列表的不同来区分多个同名函数。
· 数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式1:
· 栈内存
int arr的引用就是保存在栈内存中的。栈内存用于存储局部变量,当数据使用完,所占空间会自动释放
· 堆内存
a. 数组和对象,通过new建立的实例都存放在堆内存中
b. 每一个实体的内存地址值
c. 实体中的变量都有默认初始化值
d. 实体不在被使用,会在不确定的时间内被垃圾回收器回收
· 方法区,本地方法区,寄存器
访问到了数组中不存在的脚标时发生
· 空指针异常(NullPointerException)
arr引用没有指向实体,却在操作实体中的元素时发生
折半查找(二分查找)
定义了名称为arr的二维数组,二维数组中有3个一维数组。每一个一维数组中有2个元素,以为数组名称分别为arr[0],arr[1],arr[2]
给第1个一维数组脚标赋值为78的写法是:arr[0][1] = 78;
格式2:int[][] arr = new int[3][];
二维数组中有3个一维数组,每一个一维数组都是默认初始化值null。可以对这3个一维数组分别进行初始化:
arr[0] = new int[3]; arr[1]= new int[2]; arr[2] = new int[4];
格式3:int[][] arr = {{3,8,2}{2,7}{9,0,1,6}};
定义了一个名称为arr的二维数组,二维数组中有3个一维数组。每一个一维数组的值都已经初始化。
第1个一维数组arr[0] = {3,8,2}; 第2个一维数组 arr[1] = {2,7}; 第3个一维数组arr[2] = {9,0,1,6}
第3个一维数组的长度表示方式:arr[2].length
注意特殊写法:int[] x,y[] x是一维数组,y是二维数组
1,函数的定义:
· 什么是函数?函数就是定义在类中具有特定功能的一段独立小程序。函数也称为方法
· 函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,函数类型 形式参数2,……) { 执行语句; return 返回值; }
返回值类型:函数运行后的结果的数据类型
参数类型:是形式参数的数据类型
形式参数:是一个变量,用于存储函数时传递给函数的实际参数
实际参数:传递给形式参数的具体数值
reutrn:用于结束函数
返回值:该值会返回给调用者
2,函数的特点:
· 定义函数时可以将功能代码进行封装· 便于对该共嫩进行复用
· 函数只有被调用才会被执行
· 函数的出现提高了代码的复用性
· 对于函数没有具体返回值的情况,返回值类型关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写
· 注意:
a. 函数中只能调用函数,不可以在函数内部定义函数
b. 定义函数时,函数的结果该返回给调用者,交由调用者处理
3,函数的应用
· 两个明确:a. 明确要定义的功能最后的结果是什么?
b. 明确在定义该功能的过程中,是否需要未知内容参与运算
· 示例:
需求:定义一个功能,可以实现两个整数的加法运算
分析:该功能的结果是什么?两个数的和,也就是一个整数(int)。在实现该功能的过程是否有位置内容参与运算?加数和被加数是不确定的(2个参数,int,int)
代码:
int getSum(int x, int y) { return x+y; }
4,函数的重载
· 重载的概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
· 重载的特点:
与返回值无关,只看参数列表。
· 重载示例:
//返回2个整数的和 int add(int x, int y){return x+y;} //返回3个整数的和 int add(int x, int y, int z){return x+y+z;} //返回2个小数的和 int add(double x, double y){return x+y;}
·什么时候用重载?
当定义功能相同,但参与运算的位置内容不同。那么,这时就定义一个函数名称以表示功能,方便阅读。而通过参数列表的不同来区分多个同名函数。
二,数组
1,数组的定义
· 概念:同一种类型数据的集合,其实数组就是一个容器· 数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式1:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……} int arr = new int[]{3,5,7} int arrr = new {3,5,7}
2,数组的内存结构
Java程序在运行时,需要在内存中分配空间。为了提高运算效率,又对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式,· 栈内存
int arr的引用就是保存在栈内存中的。栈内存用于存储局部变量,当数据使用完,所占空间会自动释放
· 堆内存
a. 数组和对象,通过new建立的实例都存放在堆内存中
b. 每一个实体的内存地址值
c. 实体中的变量都有默认初始化值
d. 实体不在被使用,会在不确定的时间内被垃圾回收器回收
· 方法区,本地方法区,寄存器
3,数组操作常见问题
· 数组脚标越界异常(ArrayIndexOutOfBoundsException)int[] arr = new int[2]; System.out.println(arr[3]);
访问到了数组中不存在的脚标时发生
· 空指针异常(NullPointerException)
int[] arr = null; System.out.println(arr[0]);
arr引用没有指向实体,却在操作实体中的元素时发生
4,数组常见操作
获取最值(最大值和最小值):public static int getMax(int[] arr)//获取一个整数类型数组中的最大值 { 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) //接收一个int类型数组,给数组进行选择排序 { 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); } } } }
折半查找(二分查找)
5,数组中的数组
二维数组[][]:
格式1:int[][] arr = new int[3][2];定义了名称为arr的二维数组,二维数组中有3个一维数组。每一个一维数组中有2个元素,以为数组名称分别为arr[0],arr[1],arr[2]
给第1个一维数组脚标赋值为78的写法是:arr[0][1] = 78;
格式2:int[][] arr = new int[3][];
二维数组中有3个一维数组,每一个一维数组都是默认初始化值null。可以对这3个一维数组分别进行初始化:
arr[0] = new int[3]; arr[1]= new int[2]; arr[2] = new int[4];
格式3:int[][] arr = {{3,8,2}{2,7}{9,0,1,6}};
定义了一个名称为arr的二维数组,二维数组中有3个一维数组。每一个一维数组的值都已经初始化。
第1个一维数组arr[0] = {3,8,2}; 第2个一维数组 arr[1] = {2,7}; 第3个一维数组arr[2] = {9,0,1,6}
第3个一维数组的长度表示方式:arr[2].length
注意特殊写法:int[] x,y[] x是一维数组,y是二维数组
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树