首页 > 编程语言 >day01-java数组

day01-java数组

时间:2023-10-12 22:01:57浏览次数:39  
标签:java 对象 day01 int 数组 类型 new

数组概述

数组的定义

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

数组描述的时相同类型的若干个数据,按照一定的先后次序排列组合而成。

数组的声明和创建

首先必须声明数组变量,才能在程序中使用数组。

dateType[] arrayRefVar;
或者
dataType arrayRefVar[]; //效果相同,但不是所选方法

java语言使用new操作符来创建数组

dataType[] arrayRefVar = new dataType[arraySize];

获取数组的长度

arrays.length

内存分析

存放new的对象和数组

可以被所有的线程共享,不会存放别的对象引用

存放基本变量类型(会包含这个基本类型的具体数值)

引用对象的变量(会存放这个引用在堆里面的具体地址)

方法区

可以被所有线程共享

包含了所有的class和static变量

三种初始化

静态初始化

int[] a = {1, 2, 3};
Man[] mans = {new Man(1, 2), new Man(1,2)};

动态初始化

int[] a = new int[2];
a[0] = 1;
a[1] = 2;

数组的默认初始化

数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

数组的四个基本特点

  1. 其长度是确定的。数组一旦被创建,它的大小就是不可以改变。
  2. 其元素必须是相同类型,不允许出现混合类型
  3. 数组中的元素可以是任何数据类型,包括基本类型和引用类型
  4. 数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

数组边界

下表的合法边界:[0, length - 1],如果越界就会报错。

ArrayIndexOutOfBoundException:数组下标越界异常!

多维数组

多维数组可以看成是数组的数组,比如二位数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。

int a[][] = new int[2][5];//可以看成一个两行五列的数组

arrays类讲解

数组的工具类java.util.Arrays

由于数组对象本身并没有声明方法可以供我们调用,但api中提供了一个工具类arrays供我们使用,从而可以对数据对象进行一些基本操作。

Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类型进行调用,二而”不用“使用对象来调用

稀疏数组

当一个数组中大部分元素为0,或者为同一值得数组是,可以使用稀疏数组来保存该数组。

稀疏数组得处理方式:

  • 记录数组一共有几行几列,有多少个不同值。
  • 把具有不同值得元素和行列及值记录在一个小规模得数组中,从而压缩程序的规模

标签:java,对象,day01,int,数组,类型,new
From: https://www.cnblogs.com/echoryblog/p/17760682.html

相关文章

  • JavaScript的工作原理:引擎、运行时和调用堆栈
    概述几乎每个人都已经听说过V8引擎这个概念,大多数人都知道JavaScript是单线程的,或者它使用的是回调队列。在本文中,我们将详细介绍这些概念,并解释JavaScript实际运行的方式。通过了解这些详细信息,你将能够正确地利用其所提供的API编写更好的、非阻塞的应用,这些应用正确地利用了......
  • 代码随想录训练营的第二天(Python)| 977.有序数组的平方、209.长度最小的子数组
    977.有序数组的平方暴力求解(O(n+logn))classSolution:defsortedSquares(self,nums:List[int])->List[int]:returnsorted(i**2foriinnums)双指针(O(n))由于列表是单调递增的,元素平方后的最大值要么在最前面,要么在最后面classSolution:defsort......
  • day01-Java方法
    方法java方法是语句的集合,它们在一起执行一个功能--相当于c中的函数方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子......
  • 总结数组中常用的方法
    //改变原数组数组名.push(数据),返回数组的长度数组名.pop(),返回删除的那个数据数组名.unshift(数据),返回数组的长度数组名.shift(),返回删除掉的那个数据数组名.reverse(),返回翻转好的数组数组名.sort()会按照位排序,比如1,11,2;字符串会按照AscII码顺序单个比较字符数组名.sort(fu......
  • java的字符串模板
    java的字符串模板介绍java如何解决字符串占位符的问题JEP430字符串在java中是如何构造的在编程中,字符串是无处不在的。在编码过程中,要不断的构造字符串直接使用连字符+对于很短的字符连接是很方便的,但对于多个+操作,就十分麻烦了并且很难读StringBufferStringBuilder可......
  • Scala学习(三)数组操作
    1、定长数组vara=newArray[String](10)vara=Array("zhangsan","lisi")2、变长数组ArrayBuffer相当于java的ArrayListimportscala.collection.mutable.ArrayBuffervara=ArrayBuffer[Int]()a+=1即向数组中放入一个元素值为1 a+=(1,2,3,4,5)a++=Array(6,7,8,9,10)a.tr......
  • Java Stream 优化java代码
    使用strteam就是为了代码更加简洁,同时功能又不会收到影响,废话不多说使用原始流使用int、long和double等基本类型时,请使用IntStream、LongStream和DoubleStream等基本流,而不是Integer、Long和Double等装箱类型流。原始流可以通过避免装箱和拆箱的成本来提供更好的性......
  • java数据库与JDBC
    java数据库与JDBCjava与MYSQL1.下载驱动https://dev.mysql.com/downloads/connector/j/https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.1.0.zip2.导入mysql-connector-j.*.jar包3.然后在src目录下新建一个java类4.写入数据库连接测试代码import......
  • java10/12今日总结
    1publicclassZoo2{34publicstaticvoidmain(Stringargs[])5{67Feederf=newFeeder("小李");89//饲养员小李喂养一只狮子1011f.feedLion(newLion());1213//饲养员小李喂养十......
  • Java8新特性之Stream流(六)
    1.Stream流介绍一种支持顺序和并行聚合操作的元素序列,能够对集合、数组进行过滤、排序、去重等操作;Stream流与日常IO流是不同的技术体系;官方定义:Asequenceofelementssupportingsequentialandparallelaggregateoperations.Stream的两种操作:publicclassStreamTes......