补day4:如果一个函数的返回值类型是具体的数据类型,那么该函数就必须要保证在任意情况下都保证有返回值。(除了void类型)
return关键字的作用:
1.返回数据给函数的调用者
2.函数一旦执行到了return关键字,那么该函数马上结束。(能结束一个函数) return;
注意:一个函数的返回值类型是void,那么也可以出现return关键字,但是return关键字的后面不能有数据。
break关键字与return关键字的区别:
1.break关键字是结束一个循环
2.return关键字是结束一个函数
函数的重载:
在一个类中出现两个或者两个以上的同名函数,这个称作为函数的重载。
函数重载的作用:同一个函数名可以出现了不同的函数,以应对不同个数或者不同数据类型的参数。
函数重载的要求:
1.函数名一致
2.形参列表不一致(形式参数的个数或者是对应的数据类型不一致)
3.与函数的返回值类型是无关的
(要不就是重复定义)
数组:数组是同一种数据类型数据的集合容器。
数组的定义格式:
数据类型【】 变量名=new 数据类型【长度】;
局部变量:如果一个变量是在一个方法(函数)的内部声明的,那么该变量就是一个局部变量。
成员变量:成员变量就是定义在方法之外,类之内的。
栈内存:栈内存存储的都是局部变量,变量一旦出了自己的作用域,那么马上会从内存中消失,释放内存空间。
堆内存:堆内存存储的都是对象数据,对象一旦被使用完,并不会马上从内存中消失,而是等待垃圾回收器不定时把垃圾对象回收,这时候该对象才会消失,释放内存。
对象如果没有变量引用了,那么该对象就是一个垃圾对象了。
凡是以new关键字创建的对象,jvm都会在堆内存中开辟一个新的空间,创建一个新的对象。
数组的好处,对分配到数组对象中的每一个数据都分配一个编号(索引值,角标,下标),索引值的范围从0开始,到n-1
数组中最常见的问题:
1.NullPointerException 空指针异常
原因:引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。
2.ArrayIndexOutOfBoundsException 索引值越界。
原因:访问了不存在的索引值。
数组的初始化方式:
数据类型【】 变量名=new 数据类型【长度】; //动态初始化
数据类型【】 变量名={元素1,元素2,元素3....}; //静态初始化
排序:
选择排序:
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a= {18,12,6,8,9};
selectSort(a);
}
public static void selectSort(int[] arr) {
for (int i=0;i<arr.length-1;i++) {
for (int j=i+1;j<arr.length;j++) {
if (arr[j]>arr[i]) {
int temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
}
System.out.println("目前的元素是:");
for (int i=0;i<arr.length ;i++) {
System.out.print(arr[i]+",");
}
}
冒泡排序:
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a= {18,12,6,8,9};
bubbleSort(a);
}
public static void 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;
}
}
}
System.out.println("目前的元素是:");
for (int i=0;i<arr.length ;i++) {
System.out.print(arr[i]+",");
}
}
查找:折半查找法
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a= {12,16,54,56,70};
int index=halfSearch(a,156);
System.out.println("元素的索引值为:"+index);
}
public static int halfSearch(int[] arr,int target) {
int max=arr.length-1;
int min=0;
int mid=(max+min)/2;
while (true) {
if (target>arr[mid])
min=mid+1;
else if (target<arr[mid])
max=mid-1;
else
return mid;
//没有找到
if (max<min)
return -1;
mid=(max+min)/2;
}}
Arrays.sort();排序
Arrays.toString();输出
Arrays.binarySearch();折半查找法
二维数组的初始化方式:
数据类型【】【】 变量名=new 数据类型【长度1】【长度2】;
静态初始化:
数据类型【】【】 变量名={{元素1,元素2,元素3...},{元素1,元素2,元素3...},{元素1,元素2,元素3...}...}
数组的特点:
1.数组只能存储同一种数据类型的数据
2.数组是会给存储到数组中的元素分配一个索引值的,索引值从0开始,最大的索引值是length-1
3.数组一旦初始化,长度固定
4.数组中的元素与元素之间的内存地址是连续的,注意,是数组中的相邻元素的地址,而不是数组本身的地址