package day05;
public class Demo1 {
//数组: 一种特殊的对象
public static void main( String[] args ){
1. 数组对象的特殊声明 与创建形式 (动态初始化, 先创建,再初始化)
int[] arr = new int[10];
for( int i=0; i获取 int value = arr[i]; * int value = arr[i]; *
2. 对数组内元素进行-->获取 int value = arr[i];
3. 对数组内元素进行--->赋值/修改 arr[i] = value; *
数组中元素的内存分析: *
(1) 当创建数组对象时, 仅仅创建了一个容器对象;
(2) 初始化赋值:
如果数组中元素是基础类型,那么 元素会被初始化为 基础类型0;
如果数组中元素是引用类型,那么 元素会被初始化为 null;
也就是说: 数组中并不存储对象,而是存储对象的引用; 在数组创建之初以及初始化,
数组中的所有引用都指向了null,而不存在对象; 另外,数组也是对象, 那么二维数组
也仅仅是 每个数组元素 指向了一个数组而已;
数组通过index访问的问题:
数组通过index, 对数组中的元素进行访问, index从0开始, 0~length-1;
1) 如果arr 指向 null, 访问时会抛出 空指针异常;
2) 如果 要访问的index 不在 0~length-1 之间,那么会抛出 数组越界异常;
数组的特点:
1. 数组只能存储同一种 数据类型的数据
2. 数组是会存储到数组中的元素分配一个index, index为 0~length-1
3. 数组一旦初始化,长度固定;
4. 数组中的元素与元素之间的内存是连续的;
另外: 数组的其他 ----> 容器 该具有的功能
1. 增加
2. 修改
3. 查找
1) 查找指定index的元素
2) 查找指定元素的 index
4. 判断
1) 判空
2) 数组是否相等
5. 删除
1) 删除指定index的元素
明显,前面所有的操作都只涉及到了 数组的查找,以及修改;
----> 数组是没有增加功能的,在数组创建之初,就没固定length, 且被初始化;
----> 数组是没有删除功能的,而是通过数组中元素的移动,覆盖要删除的元素,达到删除的目的;
/int[] arr = new int[10];for( int i=0; i必须要先有序
public static int halfSearch( int[] arr, int searchValue ){
int minIndex = 0;
int maxIndex = arr.length-1;
int midIndex;
while( minIndex <= maxIndex ){ //可以相等,那是最后一次比较
midIndex = (minIndex + maxIndex)/2;
if( arr[midIndex] < searchValue ){
minIndex = midIndex + 1;
}else if( arr[midIndex] > searchValue ){
maxIndex = midIndex - 1;
}
else
{
return midIndex;
}
}
return -1;
}
//选择排序
public static void selectSort( int[] arr ){
for( int i=0; i< arr.length-1 ; i++ ){ //如果只有一个元素,那么自然有序
for( int j=i+1; j< arr.length ; j++ ){ //n个元素只需要比较n-1次
if( arr[i] > arr[j] ){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
//获取最大数,交换到index==0的位置
public static void exchangeMaxToFirst( int[] arr ) {
if( arr.length == 0 ){
return;
}
int indexOfMaxValue = 0;
for( int i=1; i< arr.length; i++ ){
if( arr[0] < arr[i]){
indexOfMaxValue = i;
}
}
if( indexOfMaxValue != 0 ){
int temp = arr[indexOfMaxValue];
arr[indexOfMaxValue] = arr[0];
arr[0] = temp;
}
}
public static int getMax( int[] arr ) throws Exception {
int max;
max = arr[0];
for( int i=1; i< arr.length ; i++ ){
if( max < arr[i] ){
max = arr[i];
}
}
return max;
}
}