首页 > 编程语言 >Java数组 详解(初始化 格式 索引 地址值 遍历 …)

Java数组 详解(初始化 格式 索引 地址值 遍历 …)

时间:2024-06-17 17:58:31浏览次数:24  
标签:初始化 arr 遍历 Java int System 数组 public out

数组

什么是数组?

数组指的是一种容器 可以用来存储同种数据类型的多个值

小结:

数组指的是一种容器 可以用来存储同种数据类型的多个值

//数组容器在存储数据的时候 需要结合隐式转换考虑

//例如 int 类型的数组容器 (  byte  short  int  )

//例如 double类型的数组容器  (  byte  short  int  long  float  double  )

//建议 容器的类型  和存储的数据类型保持一致

数组的定义:

@ 格式 1  

数据类型 [ ]  数组名

例子: int  []  array

@ 格式 2  

数据类型  数组名  [ ]

例子:  int  array  [ ]

数组初始化

什么是数组的初始化?

初始化:就是在内存中 为数组容器开辟空间 并将数据存入容器中过程

数组初始化有两种方式:   静态初始化    动态初始化

数组的静态初始化

完整格式:

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

例子:int [] array = new int [] { 11 , 12 , 13 };

例子:double [] array2 = new double [] { 11.1 , 12.2 , 13.3 }; 

数组的动态初始化

动态初始化

初始化只指定数组长度 由系统为数组分配初始值

格式:

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

例子:

int [] arr =new int[3];

小结

静态初始化和动态初始化区别

动态初始化:手动指定数组长度 由系统给出默认初始化值

只明确元素个数 不明确具体数值 推荐使用动态初始化

举例:

使用数组容器来存储键盘录入的五个整数

int [] arr = {? ? ? };

int [] arr = new int[5];

静态初始化:手动指定数组元素 系统会根据元素个数 计算出数组长度

求中已经明确了要操作的具体数据 直接使用静态初始化即可

例子:

将全班同学成绩存入数组中 11 , 12 , 13 

int [] arr = {11 ,12 ,13};
 

数组的地址值:

地址值是什么?

数组的地址值是表示数组在内存中的位置

int array1[ ] = {11,12,13,14,15}; 
System.out.println(array1);
 //[I@4554617c 地址值
解释一下地址值格式含义:
//[D@4554617c

  [  : 表示当前是一个数组

 D :表示是 double 类型的 I 表示 int 类型

 @ :表示一个间隔符 (固定格式)

 4554617c :才是真正的数组值  (十六进制)

索引

索引  索引特点

索引:也叫做下标 角标

索引特点:从 0 开始 逐个 + 1 增长 连续不间断

测试

利用索引对数组中的元素进行访问

 1 . 获取数组里面的元素
package com.Test;


import java.util.Random;

public class Demo01 {
    public static void main(String[] args) {


        //格式 : 数组名 [索引]         
        //利用索引对数组中的元素进行访问
        //1.获取数组里面的元素

        int[] arr = {1,2,3,4,5};
        //获取数组中的第一个元素
        //其实就是 0 索引上对应的元素
        int number = arr[0];
        System.out.println(number); //1

        //获取1索引上对应的数据,并直接打印出来
        System.out.println(arr[1]); //2
        
    }
}

2.把数据存储到数组中
package com.Test;


import java.util.Random;

public class Demo01 {
    public static void main(String[] args) {

        int[] arr = {1,2,3,4,5};
        
        //格式 : 数据名 [索引] = 具体数据/变量;
        //2.把数据存储到数组中
        //细节 :数值一旦覆盖 原来的就不存在了 
        
        arr[0] =100;
        System.out.println(arr[0]);
    }
}

数组的遍历

数组的遍历 :将数组中所有的内容取出来 取出来之后可以 (打印,求和,判断…)

注意:遍历指的是取出数据的过程 不要局限理解为遍历就是打印

代码:
package com.Test;


public class Demo01 {
    public static void main(String[] args) {
        //1.定义一个数组

        int[] arr = {1,2,3,4,5};

        //2.获取数组里面所有元素
        //格式 :数组名称 [索引]

        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        System.out.println(arr[3]);
        System.out.println(arr[4]);
    }
}

优化代码:
package com.Test;


public class Demo01 {
    public static void main(String[] args) {
        

        int[] arr = {1,2,3,4,5};

        //利用循环改进代码
        
        for (int i = 0; i < 5; i++) {
            System.out.println(arr[i]);
        }
    }
}

数组长度

package com.Test;


public class Demo01 {
    public static void main(String[] args) {


        int[] arr = {1,2,3,4,5};

        //在Java中关于数组长度属性, .length
        //调用方式  数组名.length

        System.out.println(arr.length);
        }
}
优化:
package com.Test;


public class Demo01 {
    public static void main(String[] args) {


        int[] arr = {1,2,3,4,5};

        //在Java中关于数组长度属性, .length
        //调用方式  数组名.length

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

    }
}

练习 1

遍历数组并求和

定义一个数组 存储 1 , 2 ,3 ,4 ,5

遍历数组得到每一个元素 求数组里面所有数据和

代码:
package com.Test;


public class Demo01 {
    public static void main(String[] args) {


        int[] arr = {1,2,3,4,5};
        int sum = 0;

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

            sum = sum + arr[i];
        }
       
        System.out.println(sum);

        
    }
}

练习 2

统计个数

定义一个数组 存储 1 ,2  ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10

遍历数组得到每一个元素 统计数组里面一共有多少个能被3整除的数

代码:
public class Demo01 {
    public static void main(String[] args) {


        int[] arr = {1,2,3,4,5,6,7,8,9,10};

        int count = 0;

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

            if (arr[i]  %3==0){
                //System.out.println(arr[i]);
            count++;
            }
        }
        System.out.println("整数中能被3整除的数有"+count+"个")

    }
}

练习 3

变化数据

定义一个数组 存储 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10

遍历数组得到每一个元素

要求:

如果是奇数,则将当前的数字扩大两倍

如果是偶数, 则当前的数字变成二分之一

代码:
public class Demo01 {
    public static void main(String[] args) {


        int[] arr = {1,2,3,4,5,6,7,8,9,10};


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

            if (arr[i]%2==0){
                arr[i]=arr[i]/2;
            }else{
                arr[i]=arr[i]*2;
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

    }
}

数组的常见问题

当访问了数组中不存在的索引 就会引发索引越界异常

数组的常见操作

@ 1 求最值

需求:

已知数组元素为{33 ,5 , 22 , 44 ,55 }

请找出数组最大值并打印在控制台

代码:

最大值

package com.Test;


public class Demo01 {
    public static void main(String[] args) {


        int[] arr = {33,5,22,44,55};

        int max = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]>max) {
                max = arr[i];
            }
        }
        System.out.println(max);
    }
}

最小值

package com.Test;


public class Demo01 {
    public static void main(String[] args) {


        int[] arr = {33,5,22,44,55};

        int max = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]<max) {
                max = arr[i];
            }
        }
        System.out.println(max);
    }
}

@ 2 求和

遍历数组求和

需求:

生成 10 个 1 - 100 之间的随机数存入数组

 1 求出所有数据的和

 2 求出所有数据的平均数

 3 统计有多少个数据比平均数小

代码:

package com.Test;


import java.util.Random;

public class Demo01 {
    public static void main(String[] args) {

        int[] arr = new int [10];
        Random  r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int number = r.nextInt(100);
            arr[i] = number;
        }
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum = sum + arr[i];
        }
        System.out.println("数组中所有数的和为"+sum);

        int avg =sum / arr.length;
        System.out.println("数组的平均数为"+avg);

        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]<avg){
                count++;
            }
        }
        System.out.println("在数组中有"+count+"个数据 比平均数小");

        //验证
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+"  ");   
   }
}

@ 3 交换数据

交换数组中的数据

需求:

定义一个数组 存入 1 ,2 ,3 ,4 ,5 按照要求交换索引对应的元素

交换前 : 1 ,2 ,3 ,4 ,5 

交换后 : 5 ,4 ,3 ,2 ,1

代码:

package com.Test;

public class Demo01 {
    public static void main(String[] args) {

        int[] arr = {1,2,3,4,5};
        for (int i = 0, j = arr.length-1;i<j; i++,j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+"   ");

        }
    }
}

@ 4 打乱数据

打乱数组中的数据

需求:

定义一个数组 存储 1 - 5 要求打乱数组中所有数据顺序

代码:

package com.Test;

import java.util.Random;

public class Demo01 {
    public static void main(String[] args) {

        int[] arr = {1,2,3,4,5};
        //循环遍历数组 从 0 开始打乱顺序
        Random r = new Random();

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

          int randomIndex = r.nextInt(arr.length);
          //拿着随机数组元素进行交换
          int temp = arr[i];
          arr[i] = arr[randomIndex];
          arr[randomIndex] = temp;

        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print (arr[i] + "  ");
        }
    }
}

数组的内存图

Java内存分配

栈 : 方法运行时使用的内存 比如 main 方法运行 进入方法栈中实行

堆 : 存储对象或者数组 new 来创建 都存储在堆内存

方法区 : 存储可以运行的 class 文件

本地方法栈 :JVM 在使用操作系统功能的使用 和我们开发无关

寄存器 :给本地 CPU 使用 和我们开发无关

 

标签:初始化,arr,遍历,Java,int,System,数组,public,out
From: https://blog.csdn.net/Alacan/article/details/139619514

相关文章

  • 基于springboot的南门桥社区疫情防疫系统-48138(免费领源码+数据库)可做计算机毕业设计J
    Springboot南门桥社区疫情防疫系统的设计与实现摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对南门桥社区疫情防疫系统等问题,对南门桥社区......
  • Java JSON组成和解析
    本框架JSON元素组成和分析,JsonElement分三大类型JsonArray,JsonObject,JsonString。JsonArray:数组和Collection子类,指定数组的话,使用ArrayList来add元素,遍历ArrayList再使用Array.newInstance生成数组并添加元素即可.JsonObject:带有泛型的封装类,给带有泛型的字段赋......
  • java构造器
    构造器分为无参构造与有参构造每一个类都有一个隐藏起来的无参构造这个午餐构造没有返回值和返回类型,且方法名必须与类名相同,且必须是public1.使用new关键字必须要有构造器2.构造器用来初始化alt+insert快捷键快速创建构造器当有有参构造,却想调用无参构造时,必须有一个显示......
  • Java入门:02.java中数据的类型转换
    上两篇文章,大家了解到了常量与变量。以此为基础,我们引入了数据和数据类型的概念,今天我就和大家一起来更加深入的了解一下数据之间的类型转换吧。还是这张图,我们可以看到,各个类型之间,每个关键字所占用得内容空间大小也是各不相同的,而在Java中,一些数据类型是可以进行转换的。......
  • Linux上java-jar Spingboot项目
    百度的,后面再补一个Linux文档操作手册,是不是很大胆?准备工作1、首先得有两个软件Xftp(用来上传文件到)和XShell(连接服务器执行命令)2、Linux上有JDK(怎么安装可以转到Linux安装JDK流程)3、项目的JAR包项目jar包导jar<build><plugins><plugin><groupId......
  • Javaweb实现简易记事簿 jdbc实现Java连接数据库
    //相关代码packageUserAct;importjakarta.servlet.;importjakarta.servlet.annotation.WebServlet;importjakarta.servlet.http.;importjava.io.;importjava.sql.;//登出@WebServlet("/UserAct.DeleteEvent")publicclassDeleteEventimplementsServlet{......
  • [javascript]何为变量提升?
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18252500出自【进步*于辰的博客】关于编译与解释,详述可查阅博文《[Java]知识点》中的【编译与解释】一栏。参考笔记二,P43.3、P46.1、P9.3。目录1、什么是“变量提升?2、va......
  • 开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边及循环遍历文件夹全
    今天推荐一键款本人开发的pdf转单张图片并截取没有用的白边工具一、开发背景:业务需要将一个pdf文件展示在前端显示,但是基于各种原因,放弃了h5使用插件展示原因有多个,文件资源太大加载太慢、pdf展示兼容性问题、pdf展示效果不好、pdf字体有时缺失等等,所以将项目中的协议等,全部由p......
  • Java速成笔记 2024.6.17版
    变量:可以变化的容器不同变量可以存储不同类型的值变量声明方法:变量类型变量名=初始值;E.G.inta=1;变量类型:整型:intlong浮点数:floatdouble布尔:boolean字符串:String字符:char变量命名注意事项:不能重名不能以数字开头常量:关键字:final语法:finalfl......
  • 基于Java+Vue的采购管理系统:实现采购业务数字化(全套源码)
    前言:采购管理系统是一个综合性的管理平台,旨在提高采购过程的效率、透明度,并优化供应商管理。以下是对各个模块的详细解释:一、供应商准入供应商注册:供应商通过在线平台进行注册,填写基本信息和资质文件。资质审核:系统对供应商提交的资质文件进行自动或人工审核,确保供应商符......