函数:
定义
函数的作用: 为了提高功能代码的复用性。
函数的定义格式:
修饰符 返回值类型 变量名(形式参数){
函数体
}
函数的特点:
1. 函数是把一个功能的代码 封装起来以达到提高功能 代码的复用性。
2. 函数定义好之后,需要调用才能执行的。
3. 如果一个函数没有返回值类型,那么就使用void关键字表示。
return 关键字
作用:
1. 返回数据给函数的调用者。
2. 函数一旦执行到了return关键字,那么该函数马上结束。 (能结束一个函数)
注意:一个函数的返回值类型 是void,那么也可以出现return关键字,但是return关键字的后面不能有数据。
break关键字与return关键字的区别:
1.break关键字是结束一个循环。
2. return关键字是结束一个函数。
函数的重载
函数的重载:在一个类中出现两个或者两个以上的同名函数,这个称作为函数的重载。
函数重载的作用: 同一个函数名可以出现了不同的函数,以应对不同个数或者不同数据类型的参数。
函数重载的要求:
1. 函数名一致。
2. 形参列表不一致。(形式参数的个数或者是对应的数据类型不一致)
3. 与函数的返回值类型是无关的。
数组
特点
数组的特点:
1. 数组只能存储同一种 数据类型的数据。
2. 数组是会给存储到数组中 的元素分配一个索引值的,索引值从0开始,最大的索引值是length-1;
3. 数组一旦初始化,长度固定。
4. 数组中的元素与元素之间的内存地址是连续的。
一维数组
数组是存储同一种数据类型数据的集合容器。
数组的定义格式:
1.动态初始化:数据类型[] 变量名 = new 数据类型[长度];
分析数组:
左边: int[] arr 声明了一个int类型的的数组变量,变量名为arr。
int : 表示该数组容器只能存储int类型的数据。
[] : 这是一个数组类型。
arr : 变量名.
右边:new int[50]; 创建了一个长度为50的int类型数组对象。
new : 创建数组对象的关键字。
int: 表示该数组对象只能存储int类型数据。
[]: 表示是数组类型。
50 : 该数组最多能存储50个数据。数组的容量。
2.静态初始化: 数据类型[] 变量名 = {元素1,元素2…};
数组的好处: 对分配到数组对象中每一个数据都分配一个编号(索引值、角标、下标),索引值的范围是从0开始,最大是: 数组长度-1.
数组中最常见的问题:
1. NullPointerException 空指针异常
原因: 引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。
2. ArrayIndexOutOfBoundsException 索引值越界。
原因:访问了不存在的索引值。
数组的排序
public class SortArr {
public static void main(String[] args) {
int[] arr = {11,1,9,0,12,34,43,23};
// int[] newArr = selectionSort(arr);
// int[] newArr = bubbleSort(arr);
// for (int value:newArr) {
// System.out.println(value);
// }
Arrays.sort(arr);
int index = binarySearch(arr,23);
System.out.println(index);
}
/**
* 选择排序
*
* @param arr
* @return
*/
public static int[] selectionSort(int[] arr){
for (int i = 0; i < arr.length; i++){
for (int j = i+1; j < arr.length; j++){
if ( arr[i] < arr[j] ){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
/**
* 冒泡排序
*
* @param arr
* @return
*/
public static int[] bubbleSort(int[] arr){
for (int i = 0; i < arr.length-1; i++){
for (int j = 0; j < arr.length-1-i; j++){
if ( arr[j] < arr[j+1] ){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
/**
* 二分查找法
*
* @param arr
* @param value
* @return
*/
public static int binarySearch(int[] arr, int value){
int start = 0;
int end = arr.length-1;
while(start <= end){
int middleIndex = (start+end)/2;
if (value>arr[middleIndex]){
start = middleIndex+1;
}else if(value<arr[middleIndex]) {
end = middleIndex-1;
}else {
return middleIndex;
}
}
return -1;
}
}
二维数组
定义
二维数组 的定义格式:
数据类型[][] 变量名 = new 数据类型[长度1][长度2];
二维数组 的初始化方式:
动态初始化:
数据类型[][] 变量名 = new 数据类型[长度1][长度2];
静态初始化:
数据类型[][] 变量名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...} ..}
class Demo15{
public static void main(String[] args)
{
//定义了一个二维数组
int[][] arr = new int[3][4];
arr[1][1] = 100;
/*
System.out.println("二维数组的长度:"+ arr.length); // 3
System.out.println("二维数组的长度:"+ arr[1].length); //
*/
System.out.println("数组的元素:"+ arr[1][1]);
}
}