目录
一.方法(函数)
1.方法的定义
2.方法的调用过程
3.实参与形参的关系
4.方法的重载
5.方法签名(了解)
6.递归(常用于数列,阶乘)
二.数组
1.定义方法:
2.初始化:
3.注意:
4.遍历数组
5.数组特性:引用类型
6.冒泡查询 (同C语言中提到过的一样)
7.数组拷贝:
编辑
8.二维数组:
附加:
前提导入包情况下用下述方法
常见报错分析:
一.方法(函数)
1.方法的定义
修饰符 返回值类型 方法名称([参数类型 形参 ...]){
方法体代码;
[return 返回值];
}
注意事项:
2.方法的调用过程
3.实参与形参的关系
public class TestMethod {
public static void main(String[] args) {
int a = 10;
int b = 20;
swap(a, b);
System.out.println("main: a = " + a + " b = " + b);
}
public static void swap(int x, int y) {
int tmp = x;
x = y;
y = tmp;
System.out.println("swap: x = " + x + " y = " + y);
}
}
4.方法的重载
5.方法签名(了解)
定义:经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成 方法完整的名字。
6.递归(常用于数列,阶乘)
定义:一个方法在执行过程中调用自身, 就称为 "递归"
产生原因:遇到的问题直接并不好解决,但是发现将原问题拆分成其子问题之后,子问题与原问题有相同的解法,等子问题解决之后,原问题就迎刃而解了。
注意:递归非常的费内存如下图:
代码示例: 递归求 N 的阶乘
public static void main(String[] args) {
int n = 5;
int ret = fac(n);
System.out.println("ret = " + ret);
}
public static int fac(int n) {
System.out.println("函数开始, n = " + n);
if (n == 1) {
System.out.println("函数结束, n = 1 ret = 1");
return 1;
}
int ret = n * fac(n - 1);
System.out.println("函数结束, n = " + n + " ret = " + ret);
return ret;
}
二.数组
基本概念:相同类型元素的一个集合。(与C语言数组含义相似)
1.定义方法:
T[] 数组名 = new T[N];
T:表示数组中存放元素的类型
T[]:表示数组的类型
N:表示数组的长度
2.初始化:
(1).动态初始化:在创建数组时,直接指定数组中元素的个数
int[] arry=new int[10]
(2). 静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定(非边长数组)(数组内全体赋值只能在此时进行,之后只能单个单个的赋值)
int[] arry={1,2,4,5,6};
3.注意:
4.遍历数组
//正常循环遍历
int[]array = new int[]{10, 20, 30, 40, 50};
for(int i = 0; i < array.lengh; i++)//在数组中可以通过 数组对象.length 来获取数组的长度
{System.out.println(array[i]);}
//for-each
int[] array = {1, 2, 3};
for (int x : array) {
System.out.println(x);
}//for-each 是 for 循环的另外一种使用方式. 能够更方便的完成对数组的遍历. 可以避免循环条件和更新语句写错.
5.数组特性:引用类型
6.冒泡查询 (同C语言中提到过的一样)
public static void main(String[] args) {
int[] arr = {9, 5, 2, 7};
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 1; j < arr.length-i; j++) {
if (arr[j-1] > arr[j]) {
int tmp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = tmp;
}
}
}
}
查找
1.顺序查找:一个个顺序比对找。
2.二分查找:折中查找找中间值大在右小在左。
7.数组拷贝:
方法1利用循环一一赋值
public static void sam{
int[] arr={1,2,3};
int[] arr2=int[3]
for(int a=0;a<arr.lengh,a++)
{arr2[a]=arr[a]}
}
方法2操作的还是同一数组
public static void func(){
// newArr和arr引用的是同一个数组
// 因此newArr修改空间中内容之后,arr也可以看到修改的结果
int[] arr = {1,2,3,4,5,6};
int[] newArr = arr;
方法3.特殊方法的使用
(1).使用Arrays.copyOf(origon,lengh/[范围])
public static void sam{
int[] arr={1,2,3};
int[] arr2=Arrays.copyOf(arr,arr.lengh/[下角标范围])
int[] arr2=Arrays.copyOf(arr,2,4)
(2).使用Arrays.copyOfRange(origon,源要开始复制的元素的下角标,目的,目的开始复制的元素的下角标,传输的长度int )
如下图
8.二维数组:
定义: int[][] arr={{1,2,3,4},{4,5,6,7}};
本质为一维数组,数组名存一维数组首地址,一维数组里面首元素村第一列数据的首地址,第n个元素存第n列数据的首元素。
附加:
前提导入包情况下用下述方法
Arrays.sort=自定义排序(默认升序排列)
Arrarys.tostring数组转字符串
Arrarys.equals判断相等否
Arrarys.fill(name,value)填充value
tostring方法隶属于数组对象中可以将数组转化成字符串便于打印。