精华内容
下载资源
问答
  • Java数组、遍历数组

    2017-07-31 21:32:24
    数组是一组变量集合 存储相同数据类型的一组数据 分配空间时是连续的空间,按顺序 声明一个数组就是在内存空间划出一串连续的空间 数组名,即标识符,是连续空间的首地址 元素下标标明了元素在数组中的位置,...

    数组是一组变量集合 存储相同数据类型的一组数据

    分配空间时是连续的空间,按顺序

    声明一个数组就是在内存空间划出一串连续的空间

     

    数组名,即标识符,是连续空间的首地址

    元素下标标明了元素在数组中的位置,从0开始

    数组中的每个元素都可以通过下标来访问

    数组长度固定不变,避免数组越界(确定数组长度之后再分配空间)

     

    使用数组四步走:

    1.声明数组 int[] a;//int 数组类型 a 数组名字 告诉计算机数据类型是什麽

    2.分配空间 a=new int[5]; //new 创建一个对象 计算机分配一个

    1 2步合并 声明数组并分配空间 int[] a=new int[5]

    3.赋值 a[0]=8;

    4.处理数据 a[0]=a[0]*10;

     

    简写:方法1.边声明边赋值 int[] score={89,79,76}

    int[] score=new int[]{89,79,76} 不能指定数组长度

    方法2.使用循环

     

     

    数组遍历 通过for循环

    通过foreach循环 for(数据类型 变量名:数组名) 从第一个遍历到最后一个 不可控制范围

    for(int score : scores)

    第一个表达式是声明一个变量去接受每次循环得到的元素(定义的变量类型必须跟数组类型致)

    第二个表达式是需要遍历的数组或集合

    --------------------------------代码举例----------------------------------------------------

    int[] scores={77,88,99};

    int [] scores2={7,8,9};

    //foreach循环语法

    //第一个表达式是声明一个变量去接受每次循环得到的元素

    //第二个表达式是需要遍历的数组或集合

    //表达式一的数据类型必须跟表达式二的数据类型一致

    for(int score:scores2) {

    System.out.println(score);

    }

    展开全文
  • [#### 数组、多维数组,静态、动态初始化,都说明白了] 什么是数组 所谓数组,是具有相同数据类型的若干变量或者数据按照一定排序规则组合起来的一种数据存储格式。数组中的数据称为数组元素,我们使用索引来标识...

    数组、多维数组,静态、动态初始化,都说明白了]

    什么是数组

    所谓数组,是具有相同数据类型的若干变量或者数据按照一定排序规则组合起来的一种数据存储格式。数组中的数据称为数组元素,我们使用索引来标识数组元素在数组中的存储位置,索引从0开始,步长是1,其后的索引依次递增:

    数组

    其中,数据类型包括以下两种:

    • 基本数据类byte,short,int,long,float,double,char,boolean
    • 引用数据类型类,接口,数组,基本数据类型的包装类也数据引用数据类型

    Java中数组的定义

    数组的定义

    • 方式1:数据类型[] 数组名; 如:int[] ages; 推荐使用此方式创建数组。
    • 方式2:数组元素的类型 数组名[]; int ages[]; 此方法不推荐

    数组的初始化

    数组必须先初始化,才能使用,也就是要先为数组和数组元素在JVM内存模型中分配空间,给每个数组元素赋初始值,初始值可以在创建数组时指定,也可以只指定数组长度,然后使用对应数据类型的默认值作为其初始值,下图是各个数据类型的默认值:

    各个数据类型的默认值

    null 表示没有指向任何存储空间,是空值;如果将null赋予对象,则表示该对象引用为空,将会被GC回收,使用此对象调用方法,或者操作数据会触发NullPointerException(空指针异常)。

    初始化数组有两种方式:静态初始化动态初始化;但是无论以哪种方式初始化数组,一旦初始化完成,数组的长度就固定了,数组中的元素个数也就已经固定了,不能改变,所以说数组是固定长度的。

    **数组的静态初始化:**由我们(程序员们)来为每一个数组元素设置初始化值,也就是说知道要在数组中存储哪些数据;此时数组的长度JVM根据设置的初始值来分配,不需要再设置

    语法如下:

    数组的静态初始化

    创建数组时,JVM也会为其分配数据存储区域;所以,在JVM中创建一个数组时内存模型是这样的:

    静态初始化数组的JVM内存模型

    数组的动态初始化: 由我们(程序员们)来设置数组长度),而数组中元素的初始值由JVM赋予;语法:

    数组的动态初始化

    但是, 不能同时使用静态初始化和动态初始化,比如:

    int\[\] nums = new int\[3\]{13, 14, 520};  // 这种写法是错误的。
    

    那么什么时候使用静态初始化,什么时候使用动态初始化呢

    • 如果提前知道需要存储的数据,优先选用静态初始化,否则使用动态初始化来创建数组;
    • 知道数组长度时,优先使用动态初始化;
    • 数组长度和需要存储的数据都知道时,两种方式都可以,任选其一即可;

    动态初始化数组的JVM内存模型

    数组的基本操作

    1.数组基本操作:

    • 获取元素: 元素类型 变量 = 数组名[index];
    • 设置元素: 数组名[index] = 值;
    • 数组长度: int len = 数组名.length; 注意这里的length是属性,不是方法,从调用上方式上也能看出来;
    • 索引范围: 从0开始,逐一递增. 直至 length-1:[0,length-1]
    • 最大值:getMax()
    • 最小值:getMin()

    2.操作数组常见异常:

    • NullPointerException:空指针异常,数组或者变量未初始化就直接操作时会触发;
    • ArrayIndexOutOfBoundsException:数组的索引越界异常,获取数组元素时使用的索引超出了数组的索引范围时会触发。

    3.获取元素在数组中的位置索引:

    • 元素在数组中第一次出现的位置的索引:indexOf()
    • 元素在数组中最后一次出现的位置的索引:lastIndexOf()

    数组在main函数中的应用

    main函数中的数组


    可以接收传入的参数,一般是提供给用户传入参数来完成一些特定的操作的。

    多维数组

    多维数组:以数组为数据类型创建数组,也就是数组中的数组,如:二维数组可以这样来初始化:

    静态初始化

    多维数组静态初始化

    动态初始化

    多维数组动态初始化

    多维数组的取值

    int\[1\]\[1\] : 表示第2个一维数组的第2个元素;
    

    创建多维数组时,JVM为多维数组分配内存;所以,多维数组的内存模型在JVM 中是这样的:

    多维数组的JVM内存模型

    • 一维数组:数组中的每一个元素都是一个值(基本类型或者引用类型)。
    • 二维数组:数组中的每一个元素是一个一维数组。
    • 三维数组:数组中的每一个元素是一个二维数组。

    依次类推。

    杨辉三角

    杨辉三角就是一个典型的多维数组实例:它的规律是每行起始和结束两个数都是1,每个数都等于它的上方两个数之和,详情如下图所示:

    杨辉三角

    杨辉三角是二项式系数在三角形中的一种几何排列,最早出现于北宋贾宪的《黄帝九章算经细草》,后被南宋数学家杨辉抄录于《详解九章算法》一书。在Java中可以使用多维数组打印杨辉三角,代码如下:

    杨辉三角的代码实例

    foreach

    我们在使用循环迭代数组的时候,有时候并不关心迭代元素的索引,迭代数组元素的时候,直接操作数组元素,不关心操作数组的索引。所以,从Java5开始(JDK1.5)开始,Java提供了一种新的语法,foreach(增强for循环)语法如下:

    增强for循环语法

    通过foreach,我们便可以快速迭代出数组中的元素:

    增强for循环实例

    接下来,通过反编译字节码文件,看看JVM是如何实现foreach的:

    JVM中的增强for循环

    不难发现,foreach其实在底层依然是使用for循环+索引来操作数组的,虽然把foreach称为增强for循环,但其底层依然是使用for循环实现的,我们将其称之为语法糖,目的就是为了吸引开发者,让开发者写更少的代码,这恰恰也是开发者们乐意愿意看到的。

    foreach虽然会少些很多代码,但论性能,灵活性却不如for循环,所以如果只关心元素而不关心索引,首选foreach,其他情况下还是应该for循环;在集合中也是这样的道理。

    方法的可变参数

    Java5还有另一个新特性:方法的可变参数,这里可变说的是参数的个数可变,并不是参数值可变,看如下的代码中,方法getArgsLength便使用了可变参数:

    可变参数实例

    还是将其反编译,查看JVM对可变参数的实现;不难发现,方法的可变参数其实也是一个语法糖,因为其底层还是一个数组,因此,可以把可变参数类型当做一个数组来处理,比如元素输出:

    可变参数的JVM实现

    可变参数的使用注意

    1. 可变参数必须作为方法的最后一个参数,避免与其他参数产生歧义,引发异常;
    2. 方法最多只能有一个可变参数。

    完结。老夫虽不正经,但老夫一身的才华

    展开全文
  • Java 数组声明数组变量:dataType[] arrayRefVar; double[] myList;创建数组java语言使用new操作符来创建数组,语法如下:arrayRefVar = new datatype[arraySize];上面的语法语句做了两件事情:1.使用dataType...

    Java 数组

    声明数组变量:
    dataType[] arrayRefVar;           double[] myList;

    创建数组:
    java语言使用new操作符来创建数组,语法如下:

    arrayRefVar = new datatype[arraySize];
    上面的语法语句做了两件事情:1.使用dataType[arraySize]创建了一个数组;2.把新创建的数字的引用复制给变量arrayRefVar。
    另外还可以使用如下方式创建数组:

    数组的元素是用索引访问的。数组索引从0 开始,所以索引值从0到arrayRefVar.length+1.

    处理数组
    数组的元素类型和数组的大小是确定的,所以当时处理数组元素时候,我们通常使用基本循环或foreach循环。

    Java 日期时间

    java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。

    展开全文
  • 昨天偶换了一个小方法来实现Java数组、List的转化、合并,并在新数组的第一位置入自己想要或已定的数据变量/对象, 代码如下: //preCondition List list1 = new ArrayList(); List list2 = new ArrayList();...

    昨天偶换了一个小方法来实现Java数组、List的转化、合并,并在新数组的第一位置入自己想要或已定的数据变量/对象,

    代码如下:

        //preCondition
        List list1 = new ArrayList();
        List list2 = new ArrayList();
        list1.add("test1");
        list1.add("test2");
        list2.add(1);
        list2.add(2);
        String temp = "TEMP";
    
        //first:get arrays from list
        Object[] array1 = list1.toArray();
        Object[] array2 = list2.toArray();
        
        //second:get new array that length is list1.size+list2.size 
        Object[] obj = Arrays.copyOf(array1, list1.size()+list2.size()+1);
        for (int j=0; j<=array1.length; j++)
          obj[j] = j==0?temp:array1[j-1];//add temp into obj[0]
        
        //third:add array2's data into obj[]
        for(int i=0; i<array2.length; i++)
          obj[obj.length-i-1] = array2[array2.length-i-1];


    展开全文
  • 一维数组 多维数组 ↑ ↑ 数组、字符串、异常处理 →对象数组 ↓ ↓ 字符串的创建 了解异常处理 一、一维数组...
  • Java数组、引用和对象

    2019-11-05 19:01:44
    Java中,数组其实是引用类型(reference) 什么是引用? 引用就是通过一个类似于指针的东西,指向内存中的某一个区域,引用是用来找到对象和线索的 比如:通过数组的引用,我们可以找到数组下标中的某一个基本数据...
  • 一、Java 数组,方法学习思维导图 二、数组 数组是用一个标识符(变量名)和一组下标来代表的一组具有相同数据类型的数据元素的集合。这些数据元素在计算机中存储中占用一片连续的存储空间,其中每个数组元素在...
  • 这篇文章我们只谈算法的具体实现思考过程,并没有相关代码实现,代码的实现过程请参见我的另外一篇文章:Java数据结构与算法初级篇之数组、集合和散列表 源码下载地址:https://download.cs...
  • 一维数组的声明: 1、一维数组的声明方式: type var[]; 或type[] var; 例如: int a1[];...2、java语言中声明数组时不能指定其长度(数组中元素的个数),例如: int a[5]; //非法
  • 一、Java中字符串与数组之间的转化 1、字符串->数组 (1)转换成字符数组java String 类中的toCharArray()方法将字符串转换为字符数组 String str = "123abc"; char[] arr = str.toCharArray(); // char数组 ...
  • 数组 Array length String[] a = {"1","2","3"}; System.out.println(a.length); 字符串 String length() String a = "1212121212"; ...
  • 数组是一种数据结构,数组不一定里面是数,也可以是char,String,boolean,int,double 数组通过一个整型下标可以访问数组中每一个值。例如a是一个整形数组,则a[i]就是数组中下标为i的整数。 在声明(区别于创建...
  • import java.util.*; public class Wl_insert1 { public static void main(String[] args){ String Books[] = {"Computer","Hibernate","Java","Structs"}; String newbook =""; String newBooks[] = new String...
  • 黑马程序员-----java入门一DAY08------java基础2
  • java数组如何添加元素向数组里添加一个元素怎么添加,这儿总结有三种方法:1、一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度。但有个可以改变大小的数组为ArrayList,即可以定义一个...
  • java数组

    千次阅读 2019-07-18 20:59:36
    根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。 java数组的定义有两种方法 第一个:静态 数据类型[] 变量名 = new 数据类型[]{数组的内容};这是静态定义的标准写法,也可以像这样简写 数据类型[] .....
  • Java 语言是典型的静态语言,因此 Java 数组是静态的,即当数组被初始化之后,该数组所占的内存空间、数组长度都是不可变的。Java程序中的数组必须经过初始化才可使用。所谓初始化,即创建实际的数组对象,也就是在...
  • Java数组

    2020-05-06 23:28:26
    Java 数组 数组是编程语言中常见的一种数据结构。...根据数组存放元素的组织结构,可将数组分为一维数组、二维数组以及多维数组(三维及以上)。 创建数组语法: 1、数据类型[] 数组名; 2、数据类型 数组名[]; ...
  • Java数组创建、遍历、复制 创建数组的三种语法 遍历数组 数组的复制
  • Java 数组

    2020-10-20 19:53:12
    Java 数组 定义 1、数组是个容器(堆中的一块空间,需要在堆中开辟一块空间new); 2、数组可以同时存储同一类数据的多个数据(a、多个数据;b、同一类型); 特点 1、可以存储多个数据,但只能是同一类型; 2、数组...
  • java数组定义、使用、以及数组内存分析详解

    千次阅读 多人点赞 2019-10-04 22:17:30
    旨在全面性了解java数组。 文章目录1、什么是容器2、什么是数组3、数组的三种定义定义方式一定义方式二定义方式三数组定义格式详解:4、数组的访问5、什么是内存5.1 Java虚拟机的内存划分5.2 数组在内存中的存储...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,557
精华内容 20,622
关键字:

java数组、

java 订阅