首页 > 编程语言 >java数组

java数组

时间:2023-05-14 20:00:12浏览次数:46  
标签:java int array2 Arrays 数组 new out

数组

数组是相同类型数据的有序集合

数组创建

dataType[] arrayName 或者 dataType arraName[];
效果相同但是前者为首选

例如:

int[] a = new int[10];//声明+创建分配空间
int b[] = new int[10];
a[0] = 1;
//获取数组长度
array.length

内存分析

java内存:

  1. 堆:存放new的对象和数组,可以被所有线程共享,不会存放别的对象应用
  2. 栈:存放基本变量类型,引用对象的变量
  3. 方法区:可以被所有的线程共享,包含所有class和static变量

声明:栈,new:堆

三种初始化

静态初始化

int[] a = {1,2,3,4,5};
//初始化后大小不可改变

动态初始化

int[] a = new int[10];//声明+创建分配空间
int b[] = new int[10];
a[0] = 1

默认初始化

数组是引用类型,分配空间后会被隐式初始化

默认初始化0,null

四个基本点

  • 数组的长度是确定的。一旦被创建大小不可改变
  • 类型必须相同,不能出现混合类型
  • 数组变量可以看做引用类型或对象,每个元素相当于对象的成员变量,java中的对象都在堆里,数组也是在堆里

数组使用

for-each循环:array.for

可以作为方法的参数和返回值

多维数组

int[][] a = new int[10][10];
int[][] a = {{1,2},{2,3}}

Arrays类

//toString方法:
int[] a = {1,2,5,9,6};
System.out.println(Arrays.toString(a));
//out:[1, 2, 5, 9, 6]
//sort:
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//out:[1, 2, 5, 6, 9]
//fill:
 Arrays.fill(a,0);
 System.out.println(Arrays.toString(a));
 Arrays.fill(a,2,4,1);//左闭右开
 System.out.println(Arrays.toString(a));
//out:[0, 0, 0, 0, 0]
//[0, 0, 1, 1, 0]
//其他方法自己看文档

冒泡排序

事件复杂度为O(n2)

稀疏数组

当一个数组大部分都是0或者同一值,需要稀疏数组

稀疏数组:

  • 记录数组一共有几行几列,有多少不同值
  • 把具有不同值的元素和行列值记录在一个小规模数组中,缩小程序的规模
int[][] array1 = new int[11][11];
array1[2][1]=1;
array1[3][2]=2;

int[][] array2 = new int[3][3];//总+有效数
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = 2;//有效数
//遍历数组,将有效值存入稀疏数组
int count = 0;
for (int i = 0; i < array1.length; i++) {
    for (int j = 0; j < array1[i].length; j++) {
        if(array1[i][j]!=0){
            count++;
            array2[count][0] = i;
            array2[count][1] = j;
            array2[count][2] = array1[i][j];
        }
    }
}
//稀疏数组还原
int[][] array3 = new int[array2[0][0]][array2[0][0]];
for (int i = 1; i < array2.length; i++) {
    array3[array2[i][0]][array2[i][1]]=array2[i][2];
}

标签:java,int,array2,Arrays,数组,new,out
From: https://www.cnblogs.com/rainaftersummert/p/17400004.html

相关文章

  • 有序数组
    一.问题描述:实现一个类模板,它可以接受一组数据,能对数据排序,也能输出数组的内容。每行输入的第一个数字为0,1,2或3:为0时表示输入结束;为1时表示将输入整数,为2时表示将输入有一位小数的浮点数,为3时表示输入字符。如果第一个数字非0,则接下来将输入一个正整数,表示即将输入的数据的数......
  • Errors:java: 程序包org.springframework.stereotype不存在(解决方法)
    错误截图错误描述java:程序包org.springframework.stereotype不存在解决更改maven项目运行时的编译方式为maven找到File->Settings->Maven->Runner,进行勾选......
  • c#轻量级高并发物联网服务器接收程序源码(仅仅是接收硬件数据程序,没有web端,不是java,协
    c#轻量级高并发物联网服务器接收程序源码(仅仅是接收硬件数据程序,没有web端,不是java,协议自己写,如果问及这些问题统统不回复。),对接几万个设备没问题,数据库采用ef6+sqlite,可改ef+MySQL.该程序只是源码使用示例,里面有使用方法,自己研究,难度属中上层不建议新手拿YID:5999612973416375......
  • 数组的逆序输出
    1数组的逆序输出1import java.util.Scanner; public class P1427 { public static Scanner input = new Scanner(System.in); public static void main(String[] args) { int [] arr = new int [100]; System.out.println("请输入多个正整数(输......
  • java中的一点知识
    1importjavax.swing.*;这是java导入包的语法,表示导入swing这个包的所有类和接口swing是图形可视包,导入这个包后才能进行GUI图形化软件的开发import   代表“引入”javax.swing 代表“路径”(在javax文件夹下的swing文件夹)代表“全部”总结:表示引用javax文件夹......
  • java—获取某月的第一天和最后一天
    //获取给定年、月的第1天LocalDatefirstDay=LocalDate.of(year,month,1);//获取该月的最后1天(https://java2blog.com/last-day-of-month-java)LocalDatelastDay=firstDay.withDayOfMonth(firstDay.getMonth().......
  • 01-面试必会-JAVA基础篇
    1.Final有什么用?被final修饰的类不可以被继承被final修饰的方法不可以被重写被final修饰的变量不可以被改变,被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的2.什么是重载(Overload)和重写(Override)?重载:发生在同一个类中,方法名相......
  • Java 网络编程 —— 非阻塞式编程
    线程阻塞概述在生活中,最常见的阻塞现象是公路上汽车的堵塞。汽车在公路上快速行驶,如果前方交通受阻,就只好停下来等待,等到公路顺畅,才能恢复行驶。线程在运行中也会因为某些原因而阻塞。所有处于阻塞状态的线程的共同特征:放弃CPU,暂停运行,只有等到导致阻塞的原因消除,才能恢复运行,......
  • Scala 树状数组BIT模板
    Problem:6404.将数组清空目录CodeCodeobjectSolution{defcountOperationsToEmptyArray(nums:Array[Int]):Long={valn=nums.lengthvalid=Array.tabulate(n)(i=>i)valsortedId=id.sortWith((i,j)=>nums(i)-nums(j)<0)......
  • 数据结构-二维数组内存结构
    二维数组内存结构  逻辑上是二维的,再分配内存的时候,也是给他分配一维的内存行优先存储 行优先存储,M行N列的b[i][j]的存储地址=基地址+(i*N+j)*sizeof(ElemType)列优先存储 M行N列b[i][j]的存储地址=基地址+(j*M+i)*sizeof(ElemType)......