一、数组的概述

1.数组的理解:数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。

2.数组的相关概念

数组名

元素

索引

数组的长度:元素的个数

3.数组的特点:

数组是有序排列的

数组属于引用数据类型的变量。数组的元素既可以是基本数据类型,也可以是引用数据类型。

创建数组对象会在内存中开辟一整块连续的空间。

数组的长度一旦确定,就不能修改。

4.数组的分类

按照维数:一维数组、二维数组...

按照数组元素的类型:基本数据元素的数组、引用数据类型元素的数组。

5.一维数组的使用

①一维数组的声明和初始化

②如何调用数组的指定位置的元素

③如何获取数组的长度

④如何遍历数组

⑤数组元素的默认初始化值

⑥数组的内存解析

public class ArrayTest {
public static void main(String[] args) { //1.一维数组的声明和初始化
int num;//声明
num = 10;//初始化
int id = 1001;//声明+初始化 int[] ids;//声明
//1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
ids = new int[]{1001,1002,1003,1004};
//1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[] names = new String[5]; //总结:数组一旦初始化完成,其长度就确定了。 //2.通过索引的方式调用数组的指定位置元素。
//数组的索引从0开始,到数组的长度-1结束
names[0] = "小明";
names[1] = "小明1";
names[2] = "小明2";
names[3] = "小明3";
names[4] = "小明4"; //3.如何获取数组的长度。
//属性:length
System.out.println(names.length);//5
System.out.println(ids.length); //4.如何遍历数组元素,
for(int i = 0;i < names.length;i++){
System.out.println(names[i]);
} /*5.数组元素的默认初始化值
*①数组元素是整型:0
*②数组元素是浮点、double型:0.0
*③数组元素是char型:0或'\u0000'
*④数组元素是boolean型:false
*
*数组元素是引用类型时:null
*/ }

}

一维数组的内存解析

6.多维数组的使用

二维数组的理解:可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。从数组底层的运行机制来看,其实并没有多维数组。
public class ArrayTest {
public static void main(String[] args) { //1.二维数组的静态初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
//二维数组的动态初始化
String[][] arr2 = new String[3][2];//3个数组元素,每个数组元素有两个元素 //2.通过索引的方式调用数组的指定位置元素。
System.out.println(arr1[0][1]);//2 //3.如何获取数组的长度。
//属性:length
System.out.println(arr1.length);//3
System.out.println(arr1[1].length);//2 //4.如何遍历数组元素
for(int i = 0;i < arr1.length;i++){
for(int j = 0;j < arr1[i].length;j++){
System.out.print(arr1[i][j] + " ");
}
System.out.println();
} //5.数组元素的默认初始化值
/*规定:二维数组分为外层数组的元素,内层数组的元素。
* int[][] arr = new int[4][3];
* 外层元素:arr[0],arr[1]等
* 内层元素:arr[0][0],arr[1][1]等
*
* 针对于初始化方式一:比如String[][] arr2 = new String[3][2];
* 外层元素初始化值:地址值
* 内层元素初始化值:与一维数组初始化情况相同
*
* 针对于初始化方式二:比如int[][] arr3 = new int[4][];
* 外层元素初始化值:null
* 内层元素初始化值:不能调用,否则报错
*/
System.out.println(arr2[0]);//@15db9742 地址池
System.out.println(arr2[0][0]);//null
System.out.println(arr2);//@6d06d69c }

}

二维数组的内存解析:

重新梳理IT知识之java-04数组的更多相关文章

  1. Java开发知识之Java数组

    Java开发知识之Java数组 一丶数组简介 首先,不管是Java 还是 C++ 还是其它语言.都有数组. (有可能叫法不同) 数组简而言之就是存储一段连续相同数据类型的数据结构 在Java中数组可以 ...

  2. Java-Runoob-高级教程-实例-数组:04. Java 实例 – 数组反转

    ylbtech-Java-Runoob-高级教程-实例-数组:04. Java 实例 – 数组反转 1.返回顶部 1. Java 实例 - 数组反转  Java 实例 以下实例中我们使用 Collec ...

  3. 057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和

    057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和 本文知识点:求整型数组的数组元素的元素值累加和 案例:求整型数 ...

  4. java中数组的相关知识

      1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3)int[]ags={1,2,3,4,5}; 4)int[ ...

  5. Java开发知识之Java字符串类

    Java开发知识之Java字符串类 一丶简介 任何语言中.字符串都是很重要的.都涉及到字符串的处理. 例如C++中. 字符串使用内存. 并提供相应的函数进行处理 strcmp strcat strcp ...

  6. JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"

    将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...

  7. Java开发知识之Java中的集合Set接口以及子类应用

    ---恢复内容开始--- Java开发知识之Java中的集合Set接口以及子类应用 一丶Set接口以及作用 在上一讲.我们熟悉了接口的实现图.以及自己各有的子类. List接口主要存储的数据是可以重复 ...

  8. Java开发知识之Java中的集合上List接口以及子类讲解.

    Java开发知识之Java中的集合类 一丶什么是集合类 如果你学习说数据结构,那么学习集合就很简单. 因为集合就是存储数据的结构. 例如 有链表结构 (list ) 还有 map结构.等等. 集合类就 ...

  9. Java开发知识之Java中的泛型

    Java开发知识之Java中的泛型 一丶简介什么是泛型. 泛型就是指泛指任何数据类型. 就是把数据类型用泛型替代了. 这样是可以的. 二丶Java中的泛型 Java中,所有类的父类都是Object类. ...

  10. Java开发知识之Java的枚举

    Java开发知识之Java的枚举 一丶什么是枚举 枚举可以理解为就是常量,在Java中我们定义常量.都是用 final语句. C++中都是用const关键字. 枚举跟C++概念都是一样的.就是特定的常 ...

随机推荐

  1. update_jz首项V5.0-Tutorial

    What's New: 增加了4个对话框,用于展示信息.归并条目.剔除条目 增加了可视化统计图形中每个科室(柱形)的统计总数 可视化图形一些颜色调整(无奈在省份很多的条件下一些颜色还不易区分) 下面是 ...

  2. 2019牛客多校第二场F Partition problem 暴力+复杂度计算+优化

    Partition problem 暴力+复杂度计算+优化 题意 2n个人分成两组.给出一个矩阵,如果ab两个在同一个阵营,那么就可以得到值\(v_{ab}\)求如何分可以取得最大值 (n<14 ...

  3. E. Pavel and Triangles dp+问题转化

    E. Pavel and Triangles dp+问题转化 题意 给出n种线段,每种线段给出一定数量,其中每个线段都是 \(2^k\) 问最多能组成多少个三角形 思路 因为每个是\(2^k\)所以能 ...

  4. 每天进步一点点------Allegro 怎样把铺铜显示关掉,但是走线要显示?

    [背景] 铺铜是PCB布线的末尾环节,在PCB设计后期审查中,我们会检查走线的规则,但是铺铜后,不容易看见走线的效果,这时我们需要关闭铺铜显示,但是走线任然要显示. [解决方法] 执行Setup-&g ...

  5. 【转载】C++面试题(1-50)

    转自http://www.jobui.com/mianshiti/it/cpp/5017/ 1.    面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象. ...

  6. java is 和 == ,以及equal

    package string; public class MemAddrChange { public static void main(String[] args) { // const 常量区,

  7. .net core各种修改环境变量的方式

    除了修改系统变量,或者程序硬编码中修改,还有以下方法: 发布在IIS中,修改web.config <environmentVariables> <environmentVariabl ...

  8. Labview初识

    Labview2013安装教程 请访问http://wenku.baidu.com/link?url=Nw4pYpRqMupd9Bn3OfkFBoYM6Hhw9TqWvffZHX-GDQYPCTtqo ...

  9. np.c_与np.r_

    import sys reload(sys) sys.setdefaultencoding('utf-8') import numpy as np def test(): ''' numpy函数np. ...

  10. python关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)

    一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 功能 说明 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirna ...