--------------------------android培训、java培训、期待与您交流! ------------
1.方法
方法也称为函数就是定义在类中具有特定功能的一段独立小程序,java中对功能的定义是通过函数的形式来实现的。
方法的格式
修饰符返回值类型 函数名(参数类型 形式参数1, 参数类型 形式参数2 ...)
{
执行语句;
return返回值;
}
返回值类型:方法运行后结果的数据类型
形式参数:是一个变量,用于存储调用方法时传递给方法的实际参数
实际参数:传递给形式参数的具体数值
return:用于结束方法
方法的重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型或参数顺序不同即可
作用:1.提高代码的复用性
注意:方法中只能调用方法,不能定义方法(常见错误:在主函数中定义函数)
对方法的理解:方法是对类中实现某个功能的代码的封装体,这样可以提高程序代码的可读性和条理性。
2.内存结构
java程序在运行时,需要在内存中分配空间。为了提高运算的效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式
java在内存中划分了5片空间来进行自己数据存储:方法区,本地方法区,寄存器,栈内存,堆内存
栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放
堆内存:数组和对象,通过new建立的实例都存放在堆内存中。每一个尸体都有内存地址值。实体中的变量都有默认的初始化值。实体不再被使用,会在不确定的时间内被垃圾回收器回收。
局部变量:定义在方法中的变量,定义在方法参数中的变量,定义在for循环中的变量
3.数组
数组是一种引用型的数据类型,用来存放同一类型值的集合,通过一个整型下标可以访问数组中的每一个值。
一维数组的声明和初始化
数组类型[] 数组名;
数组名 = new 数组类型[]{....};//此处最好不要给数组指定长度
或数组类型[] 数组名 = {....}
java中的数组在内存中的状态:
java中的数组为静态数组,一旦分配了内存就无法改变其大小和所在内存中的位置,数组 变量是引用型的变量,例如int[]a = new int[5] a new之后会在堆内存中开辟一个新的空间存放数组对象,数组变量存在于栈内存中,指向处于堆内存中的数组对象。数组的初始化指的是让数组变量指向实在的数组对象。int[] a;这个数组变量没有指向数组对象因此无法使用,要想使用就必须赋予数组对象。如果打印数组变量a结果是数组的首地址
int[] a = new int[3]; a = null;表示a不再指向堆内存的数组对象,堆内存中的数组没有被引用的时候会被当做垃圾在不确定的时候被清除。
数组操作的常见问题
int[] arr = new int[3];
System.out.println(arr[3]);
编译不出错,运行出错,数组下标越界
int[] arr = new int[3];
arr = null;
System.out.print(arr[1]);
编译不出错,运行出错,空指针异常
数组的遍历
数组中的属性.length能直接获取到数组元素个数
for(int x=0; x<arr.length; x++)
{
System.out.print(arr[x]+"");
}
数组排序
选择排序:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
- public static void selectSort(int[] arr){
- for(int i=0;i<arr.length-1;i++){<span style="white-space:pre"> </span>//一共arr.length-1趟
- for(int j=i+1;j<arr.length;j++){ <span style="white-space:pre"> </span>//每趟比较 arr.length-i-1次
- if(arr[i]>arr[j]){
- int temp = 0;
- temp = arr[j];
- arr[j] = arr[i];
- arr[i] = temp;
- }
- }
- }
- }
冒泡排序:相邻的两个元素进行比较,如果符合条件就换位。
- public static void bubbleSort(int[] arr){
- for(int i=0;i<arr.length-1;i++){<span style="white-space:pre"> </span>//一共arr.length-1趟
- for(int j = 0;j<arr.length-1-i;j++){<span style="white-space:pre"> </span>//每趟比较arr.length-1-i次
- if(arr[j]>arr[j+1]){
- int temp = 0;
- temp = arr[j];
- arr[j] = arr[j+1];
- arr[j+1] = temp;
- }
- }
- }
- }
- }
数组元素查找:
二分法查找
- public static int binarySearch(int[] arr,int key){
- int min,max,mid;
- min = 0;
- max = arr.length-1;
- while(min<=max){
- mid = (min+max)/2;<span style="white-space:pre"> </span>//定义指针mid,指向数组中央
- if(arr[mid]>key){
- max = mid-1;<span style="white-space:pre"> </span>//如果mid指向的数比键值大,指针左移
- }else if(arr[mid]<key){
- min = mid+1;<span style="white-space:pre"> </span>//如果mid指向的数比键值小,指针右移
- }else{
- return mid;<span style="white-space:pre"> </span>//返回角标
- }
- }
- return -1;<span style="white-space:pre"> </span>//-1表示没有找到
- }
4.二维数组
格式1:int[][] arr= new int[3][2];
格式2:int[][] arr= new int[3][];
对于格式2,每个一维数组都是默认初始化值null,可以对这三个一维数组分别进行初始化
arr[0] =new int[3];
arr[1] =new int[2];
arr[2] =new int[1];
二维数组在内存中的表示:
-----------------------android培训、java培训、期待与您交流! ----------------------