java 数组对象

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;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,779评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 13,763评论 0 89
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,921评论 0 2
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 1,426评论 0 6