首页 > 系统相关 >java基础-数组的定义,静动态初始化,数组元素的相关操作、数组的内存图

java基础-数组的定义,静动态初始化,数组元素的相关操作、数组的内存图

时间:2023-05-04 20:48:13浏览次数:30  
标签:初始化 arr java int 元素 数组 new

一、什么是数组

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

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

例如:int类型的数组容器,只能存储byte、short、int类型的数据。(byte<short<int<long<float<double)

例如:double类型的数组容器,可以存储byte、short、int、long、float、double类型的数据。

建议数组容器中存储的数据类型保持一致。

二、数组的初始化

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

1、静态初始化

格式1:不简写

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

格式2:简写格式

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

2、动态初始化

格式:动态初始化的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值。

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

例如:String[] arr=new String[50];

3、数组动态初始化和静态初始化的特点

静态初始化:由系统给出默认的初始化值数组长度

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

4、默认初始化值

整数类型:默认值是0

小数类型:默认初始化值0.0

字符类型:默认初始化值'\u0000' 

布尔类型:默认初始化值false

引用数据类型:默认初始化值null。

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

从元素是否明确的角度看,如果数组个数不明确,推荐使用动态初始化;如果元素明确,则直接使用静态初始化。

三、数组元素的操作

String[] arr=new String[50];

1、添加数组元素

arr[0]="张三";
arr[1]="李四";

2、删除数组元素

有一个数组,需要删除其中的元素。这时需要新建一个数组,在元素的数组中遍历元素,再通过条件控制语句将符合条件的元素添加到新数组中。

3、修改数组元素

通过下标索引修改

4、查询数组元素。

通过下标索引定位查询

System.out.print(arr[0]);
//结果:张三

如果查询的索引在数组中还没被定义,那么就会打印默认值

5、便利数组元素

int[] arr={1,2,3,4,5};
//遍历数组元素
for (int i=0;i<arr.length;i++){
    System.out.print(" "+arr[i]);
}

6、数组元素之和

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);

7、求数组元素中的最大值

int[] arr={1,2,3,4,5};
//求数组元素中最大值
int max=arr[0];
for (int i=1;i<arr.length;i++){
if (max<arr[i]){
    max=arr[i];
    }
}
System.out.println("最大值="+max);

8、求平均数

int[] arr=new int[10];
/**
*随机生成10个1~100的数,求其中的最大值、平均值、和比平均数小的个数
**/
int sum=0; Random random=new Random(); for (int i=0;i<arr.length;i++){ int number= random.nextInt(100)+1; System.out.print(" "+number); arr[i]=number; sum=sum+arr[i]; } System.out.println("所有数据之和="+sum); //平均数 int avg=sum/arr.length; System.out.print("平均数为="+avg); //比平均数小的个数 int count=0; for (int i=0;i<arr.length;i++){ if (arr[i]<avg){ count=count+1; } } System.out.println("比平均数少的有"+count+"个");

9、交换收尾索引对应的元素

int[] arr = {1, 2, 3, 4, 6};
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 x = 0; x < arr.length; x++) {
    System.out.print(arr[x] + "");
}

10、随机打乱数组中所有数据的顺序

int[] arr = {1, 2, 3, 4, 5};
Random random = new Random();
for (int i = 0; i < arr.length; i++) {
    //随机生成一个元素索引
    int j = random.nextInt(arr.length);
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}
for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

四、数组的内存图

栈:方法在运行时使用的内存,比如main方法运行,进入方法中执行。

堆:只要new创建出来的,一定是在堆里面开辟了一个小空间,如果new了多次,那么在堆里面有多个小空间,每个小空间中都有各自的数据。

 

标签:初始化,arr,java,int,元素,数组,new
From: https://www.cnblogs.com/hqh2021/p/17367312.html

相关文章

  • 数组排序输出(函数模板)
    一、问题描述:对于输入的每一批数,按从小到大排序后输出。一行输入为一批数,第一个输入为数据类型(1表示整数,2表示字符型数,3表示有一位小数的浮点数,4表示字符串,0表示输入结束),第二个输入为该批数的数量size(0<size<=10),接下来为size个指定类型的数据。输出将从小到大顺序输出数据。函......
  • Java设计模式-建造者模式
    简介建造者模式是一种创建型设计模式,用于将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通过将复杂对象的构建过程分解为多个简单的步骤来实现。与其他创建型模式不同,建造者模式强调的是将构建过程与表示分离,而不是将对象与其构建方式分离......
  • Java 双指针项目中的实际应用
    背景说明最近在做财务相关的系统,对账单核销预付款从技术角度来看就是将两个数组进行合并对账单核销预付款前提条件:对账单总金额必须等于未核销金额数据示例对账单数据单号金额B0001100B000280B0003120预付款数据单号未核销金额PRE0011......
  • Java学习笔记(九)
    1、代理模式的概念可以为其它对象提供一种代理以控制对这个对象的访问,屏蔽对真实角色的直接访问。2、为什么要重写toString()方法?默认情况下,toString()方法返回的字符串是由对象的类名、“@”符号和对象的哈希码组成的。我们需要重写toString()方法,以便返回更有意义和有用的字......
  • Java练手项目(尚硅谷的),不涉及框架,数据库等。
    软件:idea我是先建立了一个空白的项目,自己创建的src包和其下面的包。问题一:建立包之后发现格式为src.com.tjp.bean没办法建立其他与bean同级的servicetestutilsview等。只允许继续建立bean的子包。解决:这是因为idea自动会折叠空白包。(不同版本的idea可能和我的位置不太一......
  • js基础---数组操作(破坏性改变数组)
    数组元素的crudpush():像数组末尾添加一个或多个元素并返回数组的新长度pop():删除并返回数组的最后一个元素unshift():像数组的开头添加一个或多个元素,并返回数组的长度shift:删除并返回数组的第一个元素splice(1,3,“111”):删除添加插入替换数组中的元素.(删除包括第一个坐标元素后面的三......
  • JAVA中字符串的常用方法
    JAVA中字符串的常用方法字符串不能改变,创建后就无法更改了创建字符串的两种方式直接赋值new的方式获取一个字符串对象 构造方法构造方法说明publicString()创建空白字符串,不包含任何内容publicString(StringOriginal)根据传入的字符串,创建字符串对象......
  • 实例046 数组的下标界限
    以下是使用Java文本框控件实现Java数组的下标界限完整代码,包括详细注释:importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassTestextendsJFrameimplementsActionListener{//定义窗口中需要用到的组件privateJTextFieldtextField......
  • java面对对象编程-内部类
    内部类内部类就是在一个类的内部再定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对于B类来说就是外部类了。成员内部类静态内部类 局部内部类(写在方法里) 匿名内部类 外部类:用new,内部类:通过外部类来实例化内部类 内......
  • 后缀数组学习笔记
    概念后缀数组,即对于一个串,它的每个后缀按字典序排序后得到的数组。有两个数组要求:\(SA_i\):排名为\(i\)的后缀的开头位置\(RK_i\):以\(i\)为开头的后缀的排名朴素sort排序一下优化倍增优化:我们进行\(\logn\)次排序,第\(k\)次取所有后缀的前\(2^k\)个字符进行......