一、声明与初始化一维数组

1、声明(两种方式)

数组元素类型 数组名称[];

数组元素类型[] 数组名字;

数组元素类型:决定了数组的数据类型,即数组要存放什么类型的数据,可以是基本数据类型和引用数据类型;

Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5]; //非法

Demo:

int a[];

int[] a1;

double b[];

String[] c; //引用类型变量数组

2、初始化(两种方式)

数组的初始化:在内存当中创建一个数组,并且向其中赋予一些默认值,再用 new 运算符进行内存分配。

两种初始化方式:

(1)动态初始化(指定长度):数组声明且为数组元素分配空间与赋值的操作分开进行

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

数据类型:也就是数组当中保存的数据,全都是统一的什么类型,与声明时要一致;

数组长度:也就是数组当中,到底可以保存多少个数据,是一个int数字;

注意:数组有定长特性,数组一旦初始化完成,其长度就确定了,不可更改。

(2)静态初始化(指定内容):在定义数组的同时就为数组元素分配空间并赋值。

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

注意:虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,也可以自动推算出来长度。

Demo:

int[] ids;//声明

//1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行

ids = new int[]{1001,1002,1003,1004};

//1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行

String[] names = new String[5];

3、声明并初始化数组

声明的同时使用 new 关键字为数组分配内存空间:

数据类型 数组名字 = new 数组元素的类型[数组元素的个数]

数据类型 数组名字 = new 数组元素的类型[元素1,元素2,……]

注意:使用 new 关键字分配数组时,必须指定数组元素的类型和数组元素的个数或数组元素。

4、省略new的方式(类型推断)

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

使用这种方式,会根据元素类型推断中所创建的数组中的数据类型,此时声明和初始化必须在同一行!

Demo:

int[] arr = {1,2,3,4,5};//类型推断

int[] arr2;

arr2 = {1,2,3,4,5}; //编译不通过,这样必须写在同一行

二、一维数组的访问与数组长度

1、打印数组名称

当使用 System.out.println 打印数组的名称时,得到的数组对应的:数组对象的类型@内存地址哈希值。(十六进制的地址值)

Demo:

int[] arr2 = new int[3];

System.out.println(arr2); //结果是:[I@6d06d69c

2、数组的长度

每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的 长度,语句为: 数组名.length ,属性length的执行结果是数组的长度,int类型结果。

由次可以推断出,数组 的最大索引值为数组名.length-1 。

注意:数组一旦初始化,其长度是不可变的。

3、访问数组中的元素

定义并用运算符new为之分配空间后,才可以引用数组中的每个元素

索引(下标):每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引 (index),可以通过数组的索引访问到数组中的元素;

数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];

数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 —>n-1; 如int a[]=new int[3]; 可引用的数组元素为a[0]、 a[1]、 a[2]

格式:

数组名[索引] = 数值, //为数组中的元素赋值

变量 = 数组名[索引] //获取出数组中的元素

三、遍历数组

数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。

方式一:使用索引下标方式

1 int[] array = { 15, 25, 30, 40, 50, 60, 75 };

2 System.out.println(array[0]); // 15

3 System.out.println(array[1]); // 25

4 System.out.println(array[2]); // 30

5 System.out.println(array[3]); // 40

6 System.out.println(array[4]); // 50

7 System.out.println(array[5]); // 50

这种方式需要依次根据索引进行频繁重复的操作,不推荐使用,只做了解。

方式二:使用for

int[] arr = new int[5];

for(int i = 0;i < arr.length;i++){

System.out.println(arr[i]);

}

对于一个数组,每次对每个元素的操作都是相同的,用循环是最好的方法。而且就算数组的长度发送了改变代码也不需要改动。

方式三:使用 foreach 循环

1 for (int i: array){

2   System.out.println(array[i]);

3 }

这种循环是增强形式的 for 循环,其中 i 即代表数组中的每一个元素。

四、数组元素的默认初始化值

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

初始化。

对于基本数据类型而言,默认初始化值各有不同;

对于引用数据类型而言,默认初始化值为null(注意与0不同!)

整数类型:默认是 0;

浮点类型:默认是 0.0;

字符类型:默认为 '\u0000',字符编码为0的空字符;

布尔类型:默认是 false;

引用类型:默认是 null。

注意:静态初始化其实也有默认值的过程,只不过系统自动马上将默认值替换成为了大括号当中的具体数值。

五、一维数组的内存解析

1、内存概述

内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程 序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。

Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

2、Java 虚拟机的内存划分

为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

JVM 的内存划分:

       

3、数组在内存中的存储

(1) 一个数组与内存关系

程序执行流程:

a、main 方法进入方法栈执行;

b、创建数组,JVM会在堆内存中开辟空间,存储数组;

c、数组在内存中会有自己的内存地址,以十六进制数表示;

d、数组中有3个元素,默认值为 0

e、JVM 将数组的内存地址赋值给引用变量 array;

f、变量 array 保存的是数组内存中的地址,而不是一个具体是数值,因此称为 引用数据类型;

(2)两个数组与内存关系

(3)两个变量指向一个数组

4、数组内存图

(1)声明数组类型

(2)数组的默认值

(3)数组的动态初始化

5、数组内存案例

(1)案例一

(2)案例二

(3)案例三

java 一维数组_Java 之 一维数组相关推荐

  1. java找出一组数据缺少最小数组_Java获取一维数组的最小值实现方法

    编写程序,实现接受用户在文本框中输入的单行数据.这些数据都是整数数字,以空格进行分隔,空格数量不限.并将这些数据分割成一维数组,再从数组中提取最小值显示在界面中.思路是先对用户的输入进行验证,即先用t ...

  2. java 一维数组_java基础 ---- 一维数组

    为什么要使用数组: 因为不使用数组计算多个变量的时候太繁琐,不利于数据的处理. --------   数组也是一个变量,是存储一组相同类型的变量 声明一个变量就是在内存中划出一块合适的空间 声明一个数 ...

  3. java 二维数组_Java中二维数组和异常的内容及应用

    一.二维数组 数组中嵌套数组就是二维数组 二维数组的声明 数据类型[][] 数组名; --推荐 数据类型 数组名[][]; 初始化: 动态: 数据类型[][] 数组名 = new 数据类型[一维的长度 ...

  4. java web定义数组_Java基础之数组--数组常用操作

    3.2一维数组 3.2.1声明数组 数组类型[] 数组名称:int[] username; 或者 数组类型 数组名称[];int username[]; 3.2.2初始化一维数组 一维数组初始化有两种 ...

  5. java mp3数组_Java基础之数组(一)

    数组的定义 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照 一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们.数组的三个基本特 ...

  6. java交错数组_Java和C#数组都可以交错的

    Arrays Can Be Jagged In languages like C and C++, each subarray of a multidimensional array must hav ...

  7. java 怎么用二维数组_java二维数组怎么用

    详细内容 Java的二维数组其实是一位数组的嵌套(每一行看做一个内层的一维数组) 定义格式数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][每个一维数组的长度]; ...

  8. java如何遍历字符串数组_java遍历字符串数组

    java中关于变量.数组的综合练习题_IT/计算机_专业资料.java中关于变量.数组的综合练习题,附有答案. 一.多项选择题(共1道小题,共5.0分) 1. 下列变量的...... Java数组练习 ...

  9. java实现初始化三角形数组_Java基础之数组初始化和数组JVM分析

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

最新文章

  1. 2、RabbitMQ-simplest thing(简单队列)
  2. python 最小二乘法三维坐标拟合平面_matlab三维曲面进行平面拟合,利用最小二乘法...
  3. step1.day11 C语言基础练习之指针和二级指针
  4. Java 1-Java 基础语法
  5. 微信发送模版消息,PHP代码简单案例
  6. 四大组件 之 Broadcast Receiver
  7. 阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置
  8. checking for spandsp >= 3.0... configure: error: no usable spandsp; please install spandsp3 devel pa
  9. java程序设计课程简介_《JAVA语言程序设计》课程简介
  10. java sftp 读取文件_Java代码获取SFTP服务器文件
  11. ROS二维码识别以及OKR使用
  12. 手机不能访问html文件,手机如何解决禁止访问网页
  13. 关于“应用程序正常初始化(0xc0150002)失败”问题的解决方案
  14. 5、html标签中的两种关系
  15. CSS在Mac /Win上兼容显示
  16. 上海亚商投顾:沪指逼近2900点 两市超4500股飘绿
  17. php socket 模拟http请求
  18. Hands On Machine Learning with Scikit Learn and TensorFlow(第三章)
  19. C# FileSystemWatcher监听文件夹
  20. 控制结构:14.走路去上课还是骑车去上课?

热门文章

  1. Java游戏程序部署在不同平台的手机模拟器上
  2. “新能源”担纲,IOT云端一体化,阿里集团CTO张建锋兼任阿里云CTO
  3. CSS基础选择器(标签选择器、类选择器、多类名选择器、 id选择器、通配符选择器、属性选择器)
  4. 理解 Spring ApplicationListener
  5. 儿子34天黄疸未退(5.7日)
  6. FTP-用户名密码明文传输
  7. 达梦数据库关键字与字段名冲突
  8. 基于MATLAB实现PCA人脸识别
  9. [C语言]文件操作(File Operations)
  10. 细粒度图像分类论文研读-2012