Java一维数组

目录

1、 理解数组

2、 定义数组

3、 数组元素的表示与赋值

4、 数组的初始化

5、 遍历数组

6、 数组应用


1、 理解数组


(1)在Java中,数组是用来存储一组相同类型数据的数据结构。

(2)当数组初始化完毕后,Java为数组在内存中分配一段连续的空间,其在内存中开辟的空间也将随之固定,此时数组的长度就不能再发生改变。

(3)即使数组中没有保存任何数据,数组所占据的空间依然存在。


2、 定义数组


在Java中,定义数组的语法有如下两种:

        数据类型[] 数组名 = new 数据类型[数组长度];

或者:

        数据类型 数组名[] = new 数据类型[数组长度];

        --->定义数组时一定要指定数组名和数组类型

        --->必须书写“[]”,表示定义了一个数组,而不是一个普通的变量。

        --->“[数组长度]”决定连续分配的空间的个数,通过数组的length属性可获取此长度。

        --->数组的数据类型用于确定分配的每个空间的大小。

        --->数组元素分配的初始值如下

数据元素类型                                                    默认值

byte、short、int、long                                      0

float、double                                                     0.0

char                                                                    ‘\u0000’(空格)

boolean                                                              false

引用数据类型                                                     null

3、 数组元素的表示与赋值

 
(1)数组元素在数组里顺序排列编号,该编号即元素下标,它标明了元素在数组中的位置。

(2)首元素(第一个元素)的编号规定为0,因此,数组的下标依次为0、1、2、3、4······依次递增,每次增长数是1.

(3)数组中的每个元素都可以通过下标来访问。

       获取数组元素的语法格式如下:

       数组名[下标值]

4、 数组的初始化


        所谓数组的初始化,就是在定义数组的同时一并完成赋值操作。

        数组初始化的语法格式如下:

                数据类型[] 数组名 = {值1,值2,值3,····,值n};

        或者:

                数据类型[] 数组名 = new 数据类型[]{值1,值2,值3,····,值n};

        注意:第二种初始化数组的方式里new 数据类型[]的[]括号里不能写数组长度。


5、 遍历数组


(1)使用for循环遍历数组

        for(int i = 0;i<数组名.length;i++){
            System.out.println(数组名[i]);
        }
(2)使用增强for循环遍历数组

        for(元素类型 变量名:数组名){
            System.out.println(变量名);
        }
---->增强for循环是JDK1.5之后提供的,用来实现对数组和集合中数据的访问,增强for循环的语法格式如下:

        for(元素类型 变量名 : 要循环的数组或集合名){
            ······
        }
-->第一个元素类型是数组或集合中元素的类型。

-->变量名在循环时用来保存每个元素的值。

-->冒号后面是要循环的数组或集合名称。


6、 数组应用


(1)求数组中的最大值/最小值
思路:

        1)先假设数组中的第1个元素(下标为0)为最大值
        2)依次将数组中后面的元素与这个最大值进行比较,如果比这个最大值还要大,取代它称为新的最大值
        3)比较到最后一个元素,就可以获取这个数组中的最大值

 
      

  int[] nums = { 56, 60, 78, 42, 311, 88, 12 };


        // 1)先假设数组中的第1个元素(下标为0)为最大值
     

   int max = nums[0];


 
        // 2)依次将数组中后面的元素与这个最大值进行比较,如果比这个最大值还要大,取代它称为新的最大值
 
 

       for (int i = 0; i < nums.length; i++) {
            if (nums[i] > max) {
                max = nums[i];
            }
        }
 
        System.out.println("数组中的最大值:" + max);


 
        // 获取最小值思路与获取最大值思路一样
        // 假设数组中第一个元素为最小值
 

       int min = nums[0];


        // 依次将数组中的元素取出来与这个最小值进行比较,如果元素值比这个最小值还小,就成为新的最小值,比较到最后一个元素,就可以得到数组中的最小值
     

   for (int i = 0; i < nums.length; i++) {
            if (nums[i] < min) {
                min = nums[i];
            }
        }
        System.out.println("数组中的最小值:" + min);

(2)向数组中添加元素
思路:

        1)声明一个长度比原来数组长度大1的数组
        2)将原来数组里元素按照顺序存入到新的数组中
        3)使用Scanner类获取你要增加的学员成绩
        4)通过循环比较获取增加的学员成绩的插入位置
        5)从插入元素插入位置开始及之后的元素依次往后移动一位(从最后一个元素开始,倒着移动)
        6)将要插入的成绩存储到插入位置

    

public static void main(String[] args) {

  
        //创建Scanner类对象
    

    Scanner sc=new Scanner(System.in);
        
        int[] scores={99,85,83,63,60};

 
        //1)声明一个长度比原来数组长度大1的数组
        

int[] newScores=new int[scores.length+1];


        //2)将原来数组里元素按照顺序存入到新的数组中

        for (int i = 0; i < scores.length; i++) {
            newScores[i]=scores[i];
        }
        System.out.println("插入学生成绩前的数组:");
        for (int i : newScores) {
            System.out.print(i+" ");
        }
        System.out.println();
        


        //3)使用Scanner类获取你要增加的学员成绩
        System.out.println("请输入你要增加的学员成绩:");
        int insert =sc.nextInt();
        //设置插入的成绩插入的位置,默认将其插入在数组最后位置
        int index=newScores.length-1;
        
        //4)通过循环比较获取增加的学员成绩的插入位置
    

    for (int i = 0; i < newScores.length; i++) {
            if (insert>newScores[i]) {
                index=i;
                break;
            }
        }
        


        //5)从插入元素插入位置开始及之后的元素依次往后移动一位(从最后一个元素开始,倒着移动)
     

   for (int i = newScores.length-1; i < index; i--) {
            newScores[i]=newScores[i-1];
        }
        


        //6)将要插入的成绩存储到插入位置
      

  newScores[index]=insert;


        //输出新数组所有元素
  

     System.out.println("插入学生成绩后的数组:");
        for (int i : newScores) {
            System.out.print(i+" ");
        }
    }

(3)修改数组中的元素
思路:

        1)找到要修改的元素。

        2)修改元素。

(4)删除数组中的元素
思路:

        1)找到要删除的元素。

        2)删除元素。

        3)将删除元素后面的元素依次前移,最后位置的元素修改为默认值。

   

 public static void main(String[] args) {
 
        String[] strs = { "hello", "java", "html", "css", "JavaScript" };
        System.out.println("---元素删除前---");
        for (int i = 0; i < strs.length; i++) {
            System.out.print(strs[i] + " ");
        }
        System.out.println();
 
        /*
         * 删除数组strs中的某个元素,删除完这个元素之后,后面的元素依次往前移动一位
         */
 
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你想删除的元素的下标(0-4):");
        int index = sc.nextInt();
 
        if (index == 4) {
            strs[4] = null;
        } else {
            for (int i = index; i < strs.length - 1; i++) {
                strs[i] = strs[i + 1];
            }
            // 元素往前移动之后,最后一个元素赋值为null
            strs[strs.length - 1] = null;
        }
 
        System.out.println("---元素删除后---");
        for (int i = 0; i < strs.length; i++) {
            System.out.print(strs[i] + " ");
        }
        System.out.println();
 
    }

(5)数组冒泡排序
思路:

        1)将数组中元素两两比较,大的数(小的数)往后排(往前排)。

        2)每一轮将大数(小数)排在最后面(最前面)位置。

        3)多轮比较后,得出升序(降序)排列的数组。

        代码(升序排序):以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;
                    }
                }
            }


 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值