------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------    

 

  • 方法重载

同一个类中允许多个同名的方法存在,但参数列表不同

方法的重载和修饰符、返回值没有关系

JVM 根据参数列表调用重载的方法

  • 数组概念         数据类型[] 数组名

存储同一种数据类型的多个元素的集合,也可以看成是一个容器。

数组初始化 为数组中的元素分配内存空间并赋值

         静态初始化:在定义数组的同时,直接对数组中的元素赋值

                   数据类型[ ] 数组名 = new 数据类型[ ] {数组元素1, 数组元素2, 数组元素3...};

                   注意:静态初始化不能指定数组长度

                   数据类型[] 数组名 = {数组元素1, 数组元素2, 数组元素3...};

         动态初始化:只指定数组的长度,由系统分配初始值

                   数据类型[ ] 数组名 = new 数据类型[数组长度]; // 数组长度 = 元素个数

                  动态初始化创建数组后,其元素的初始值:byteshortintlong0

float double 0.0boolean falsechar \u0000

                   引用类型的数组的元素的默认初始值都是 null

  • Java中数组的内存分配

         在堆中为数组对象分配内存,在栈中为引用(堆中对象的内存地址,即指针)分配内存。数组对象在堆中存储,数组变量属于引用类型,存储数组对象的地址信息,指向数组对象。

说明: I:\传智播客0807Java基础班\day05\数组内存图1.JPG

 

  • 栈内存和堆内存的区别

存储内容:

         栈内存,存储运行方法、局部变量

         堆内存,存储的是实体、数组、对象

内存默认值:

         栈内存:变量没有默认值,必须手动赋值

         堆内存,根据类型不同,都有默认值

生命周期:

         栈内存,使用完就被释放,生命相对较短

         堆内存,使用完不会被立刻释放,等待 JVM 回收,生命相对较长

 

  • 数组操作常见的两个问题

  • 数组索引越界ArrayIndexOutOfBoundsException

访问到了数组中不存在的索引时

2.空指针异常

NullPointerException数组引用没有指向实体,却在操作实体中的元素时

 

  • char 类型数组

输出数组变量名的时候,出现的不是地址,而是数组中每个元素

println() 默认对 char 数组,进行自动遍历

 

  • 数组的访问

获取数组的长度 length 属性(final,其值不可改变)

通过下标访问数组元素 0length-1

 

  • 数组的操作示例

 

数组遍历(依次输出数组中的每一个元素)

         int[] arr = new int[] { 2, 3, 5, 6 };

         for (int i = 0; i < arr.length; i++){

                   System.out.println(arr[i]);

}

 

数组获取最值

         // 定义一个变量,记录当前最大值

int max = arr[0];

for (int I = 1; i < arr.length; i ++) {

         if(max < arr[i]) {

                   max= arr [i];

         }

}

System.out.println(“max= ” + max);

 

// 定义一个变量,记录当前最大值的索引

int maxIndex = 0;

for (int I = 1; x < arr.length; x++){

         if(arr[maxIndex] < arr[i]){

                   maxIndex= I;

}

}

System.out.println(“max= ” +arr[maxIndex]);

 

数组元素逆序

         // 利用最大索引和最小索引访问数组元素,和临时变量完成元素的位置交换

         for (int min = 0, max = arr.length – 1;min < max; min ++, max --) {

                   int temp = arr[min];

                   arr[min] = arr[max];

                   arr[max] = temp;

         }

         // 再遍历输出,查看逆置效果

         for (int i = 0; i < arr.length; i++){

                   System.out.println(arr[i]);

}

查找指定关键字

         // 查找成功,返回第一次出现的索引,否则返回负值

         int key = 5;

         for (int i = 0; i < arr.length; i++){

                   if (key == arr[i]){

                            return 1;

                   }

}

return -1;

  • 数据传递问题

基本类型传数值,引用类型传地址

 

引用类型的参数传递问题

         被调用函数参数是引用类型,则传递的就是内存地址

         实参和形参共享内存数据