java数组基础的基本概念,声明与遍历

简介: java数组基础的基本概念,声明与遍历

数组

数组是在一块连续的内存空间中,一次性存储多个相同数据类型的变量。

数组在内存空间必定是连续的!

数组的基本使用流程:

 ①声明

       数据类型[] 变量名; int[] a;     int []a;    int a[];

   ②分配空间  

       变量名/数组名 = new 数据类型[数组长度];   a = new int[4];

     

   ③数组的声明方式有多种:

       a.声明的同时并分配空间[常用]  

           int[] a = new int[长度];

     

       b.声明并赋值:

           int[] a = new int[]{10,20,30};

           注意:分配空间时,[]中 不能定义数组长度

     

       c.声明并赋值[简单、常用]:

           int[] a = {10,20,30};

           注意:int[] a;

                 a = {10,20,30};    //错误的 error

 

   ④每一个数据格对应的数据称之为元素

   ⑤每一个元素对应的都有其下标,下标范围:0~长度-1

   ⑥元素访问:通过下标取操作元素,称之为元素访问

       为元素赋值:数组名[下标] = 数值;

       取值:数据类型 变量名 = 数组名[下标];

           System.out.println(数组名[下标]);

 

   ⑦数组遍历[重点]:从头到尾,访问每一个元素

       数组长度:数组名.length

       for(int i=0;i<数组名.length;i++){

           //通过数组名[i] 访问元素

       }

         

   注意:a.当访问无效的下标对应的元素时,会导致下标越界,会运行报错

           下标越界异常:java.lang.ArrayIndexOutOfBoundsException;

     

        b.数组的元素,具有默认值

           整数、浮点型 :0、0.0

           字符型:'\u0000'

           布尔类型:false

           对象数据类型:null


数组的默认值:

变量类型

整形变量

浮点数

字符(char)

Boolean

对象类型

默认值

0

0.0

\u0000

False

null

数组的内存存储:

①数组的内存空间是连续的

   ②数组类型的变量存储的是数组的首地址

   ③数组元素的首地址:

       首地址+下标*数据类型字节数

   ④数组下标从0开始,为了提高寻址效率

   ⑤数组类型的变量之间传递的是数组的首地址

 

   特点:寻址效率高,查询快

数组的扩容

①新建一个数组,长度大于原数组

       通过循环,一一将原数组的元素赋值给新数组

 

   ②java.util.Arrays.copyOf(原数组,新数组长度);    //返回值为赋值后的新数组

 

   ③System.arraycopy(原数组,起始下标,新数组,存储元素的起始下标,长度);

       将元素中的从起始下标开始对应的元素,

       一一赋值给新数组中存储的起始下标开始。

数组作为参数和返回值

   ①数组作为参数:实参赋值给形参 赋的是首地址

   ②数组作为返回值:

       返回值类型定义为:数据类型[]

       需要将新数组的地址返回

可变长参数

   ①概念:参数个数不限(0-n),数组形式的参数

   ②语法:数据类型...参数名(定义在形参列表处)

    注意:可变长参数只能放在形参列表的最后

定义一个数组int [] a ={1,2,3,4,5};然后遍历出每个元素的值 。

For(int i=0;i<5;i++){
       System.out.println(a[i]);
}

写一个函数,计算一个整数数组的总和 。

class asum{
       public static void main(String[] args) {
              int a[]=new int[3];
              int sum=0;
              for (int i=0;i<3;i++ ) {
                     a[i]=i;
                     sum=sum+a[i];
                     System.out.println("a["+i+"]="+a[i]+"\tsum="+sum);
              }
       }
}

自定义一个整数数组 a,读入一个整数 n,如果 n 在数组中存在,则输出 n 的下标;如果不存在,输出-1 。    

  import java.util.Scanner;
class xiabiao{
       //自定义一个整数数组 a,读入一个整数 n,如果 n 在数组中存在,则输出 n 的下标;如果不存在,输出-1
       public static void main(String[] args) {
              int a[]={10,11,12,13,15,16,17,18,19,5,6,3,2,1,9};
              Scanner sc = new Scanner(System.in);
              System.out.println("请输入一个数n:");
              int n=sc.nextInt();
              for (int i=0;i<a.length;i++ ) {
                     if (a[i]==n) {
                            System.out.println("该数下标为:"+i);
                            return;
                     }
              }
              System.out.println(-1);
       }
}
目录
相关文章
|
16天前
|
Java
Java中的抽象类:深入了解抽象类的概念和用法
Java中的抽象类是一种不能实例化的特殊类,常作为其他类的父类模板,定义子类行为和属性。抽象类包含抽象方法(无实现)和非抽象方法。定义抽象类用`abstract`关键字,子类继承并实现抽象方法。抽象类适用于定义通用模板、复用代码和强制子类实现特定方法。优点是提供抽象模板和代码复用,缺点是限制继承灵活性和增加类复杂性。与接口相比,抽象类可包含成员变量和单继承。使用时注意设计合理的抽象类结构,谨慎使用抽象方法,并遵循命名规范。抽象类是提高代码质量的重要工具。
31 1
|
19天前
|
设计模式 存储 Java
23种设计模式,享元模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享技术有效地支持大量细粒度对象的重用。这个模式在处理大量对象时非常有用,特别是当这些对象中的许多实例实际上可以共享相同的状态时,从而可以减少内存占用,提高程序效率
35 4
|
19天前
|
设计模式 Java 中间件
23种设计模式,适配器模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目标是让原本由于接口不匹配而不能一起工作的类可以一起工作。适配器模式主要有两种形式:类适配器和对象适配器。类适配器模式通过继承来实现适配,而对象适配器模式则通过组合来实现
30 4
|
14天前
|
Java 调度
Java中常见锁的分类及概念分析
Java中常见锁的分类及概念分析
15 0
|
15天前
|
算法 Java 开发者
Java中的多线程编程:概念、实现与性能优化
【4月更文挑战第9天】在Java编程中,多线程是一种强大的工具,它允许开发者创建并发执行的程序,提高系统的响应性和吞吐量。本文将深入探讨Java多线程的核心概念,包括线程的生命周期、线程同步机制以及线程池的使用。接着,我们将展示如何通过继承Thread类和实现Runnable接口来创建线程,并讨论各自的优缺点。此外,文章还将介绍高级主题,如死锁的预防、避免和检测,以及如何使用并发集合和原子变量来提高多线程程序的性能和安全性。最后,我们将提供一些实用的性能优化技巧,帮助开发者编写出更高效、更稳定的多线程应用程序。
|
4天前
|
存储 Java 程序员
Java 数组
4月更文挑战第16天
|
1天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
6天前
|
存储 Java 数据库连接
java DDD 领域驱动设计思想的概念与实战
【4月更文挑战第19天】在Java开发中,领域驱动设计(Domain-Driven Design, DDD) 是一种软件设计方法论,强调以领域模型为中心的软件开发。这种方法通过丰富的领域模型来捕捉业务领域的复杂性,并通过软件满足核心业务需求。领域驱动设计不仅是一种技术策略,而且还是一种与业务专家紧密合作的思维方式
24 2
|
15天前
|
设计模式 算法 Java
23种设计模式,模板方法模式的概念优缺点以及JAVA代码举例
【4月更文挑战第10天】模板方法模式是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。
15 0
|
16天前
|
设计模式 Java
23种设计模式,状态模式的概念优缺点以及JAVA代码举例
【4月更文挑战第9天】状态模式是一种行为设计模式,允许一个对象在其内部状态改变时改变它的行为,这个对象看起来似乎修改了它的类。
29 4