Java学习笔记(5)

补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;
}

}

二维数组的初始化方式:

数据类型【】【】  变量名=new 数据类型【长度1】【长度2】;

静态初始化:

数据类型【】【】  变量名={{元素1,元素2,元素3...},{元素1,元素2,元素3...},{元素1,元素2,元素3...}...}

数组的特点:

1.数组只能存储同一种数据类型的数据

2.数组是会给存储到数组中的元素分配一个索引值的,索引值从0开始,最大的索引值是length-1

3.数组一旦初始化,长度固定

4.数组中的元素与元素之间的内存地址是连续的,注意,是数组中的相邻元素的地址,而不是数组本身的地址

猜你喜欢

转载自www.cnblogs.com/zhangwugai/p/10298537.html