您的位置:首页 > 编程语言 > Java开发

Java基础知识: 数组和函数

2016-05-24 20:11 363 查看

数组和函数

一、数组

1. 数组基本概念

一维数组

元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
元素类型[] 变量名 = {元素1,元素2...};
元素类型[] 变量名 = new 元素类型[]{元素1,元素2...};


二维数组

元素类型[][] 数组名 = new 元素类型[第一维长度][第二维长度];


数组常见异常

数组脚标越界异常(ArrayIndexOutofBoundsException):访问到了数组中不存在的脚标时发生

空指针异常(NullPointerException):当引用没有指向实体却在操作实体中的元素时发生

2. 数组常见操作

2.1 遍历

遍历所有数组元素然后输出

public static void printArray(int[] arr) {
System.out.print("[");
for(int x=0; x<arr.length; x++) {
if(x == arr.length-1) {
System.out.println(arr[x]+"]");
}else {
System.out.println(arr[x]+", ");
}
}
}


2.2 最值

最大值

public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}
return max;
}


最小值

public static int getMin(int[] arr) {
int min = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] < min) {
min = arr[x];
}
}
return min;
}


2.3 逆序

把数组元素反转后输出

public static void reverse(int[] arr) {
for(int x=0; x<arr.length/2; x++) {
int temp = arr[x];
arr[x] = arr[arr.length-1-x];
arr[arr.length-1-x] = temp;
}
}


2.4 二分查找法

使用二分法查找数组元素,查找前数组一定是有序的

public static int halfSearch(int[] arr,int key){
int min,max,mid;
min = 0;
max = arr.length-1;
mid = (max+min)/2;
while(arr[mid]!=key){
if(key>arr[mid]){
min = mid + 1;
}
else if(key<arr[mid])
max = mid - 1;
if(max<min)
return -1;
mid = (max+min)/2;
}
return mid;


}

二、函数

1. 函数基本概念

格式

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…){
执行语句;
return 返回值;
}


修饰符

static – 静态的

final – 最终的

abstract – 抽象的

synchronized – 同步的

native – 本地的

当函数运算后,没有具体的返回值时,这时返回值类型用一个关键字void来表示

void:代表函数没有具体具体返回值的情况。当函数的返回值类型是void时,函数中的return语句可以省略不写

如何定义一个函数?

明确函数返回值类型

明确参数类型和个数

2. 函数重载

重载条件

方法名相同

返回值可以相同也可以不同

参数列表不同,可以是参数个数不不同,参数类型不同

什么时候用重载?

当定义的功能相同,但参与运算的未知内容不用,这时就定义一个函数名称来表示该功能,且通过参数列表的不同来区分多个同名函数。重载与返回类型无关

3. 函数调用

一个类内部方法调用

非静态方法内部调用非静态方法

非静态方法内部调用静态方法

静态方法内部调用非静态方法

静态方法内部调用静态方法

不同类内部方法调用

不同类之间调用方法需要创建对象导包

4. 参数传递

值传递

参数原始值是不改变的

地址传递

在方法内部修改参数的值时,参数原始的值是改变的

应用场景

值传递

8中基本数据类型和String类型

地址传递

除了String类以外的所有复合型数据类型,包括引用类型。

三、Java内存

寄存器

本地方法区

方法区

栈:存储的都是局部变量,只要数据完成运算就会被释放

堆:用于存储数组和对象,也就是实体
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息