一、数组的概述

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. MySQL学习(八)删除表数据

    表空洞的产生 删除某个行数据 或删除某个页     如下图所示,这个删除过程只是标记了某行的位置为删除,假如此时在300与600之间插入了一行数据,那么 同理,当删除某个页时,该页就会被复用.所以当删 ...

  2. HTML 5 视频直播一站式扫盲(转载)

    http://www.alloyteam.com/2016/05/h5-camera-literacy/

  3. eclipse中spring配置文件的自动提示和namespace的添加

    在用spring或者springmvc框架进行开发时,编辑applicationcontext.xml等配置文件是必不可少的,在eclipse中打开applicationcontext.xml通常是这 ...

  4. WSUS补丁服务器部署详细

    利用WSUS部署更新程序 来源于网络转载  WSUS概述 为了让用户的windows系统与其他microsoft产品能够更安全,更稳定,因此microsoft会不定期在网站上推出最新的更新程序供用户下 ...

  5. python中GraphViz's executables not found的解决方法以及决策树可视化

    出现GraphViz's executables not found报错很有可能是环境变量没添加上或添加错地方. 安装pydotplus.graphviz库后,开始用pydotplus.graph_f ...

  6. configure: error: no acceptable C compiler found in $PATH 解决

    在安装keepalived时报错 ./configure --prefix=/usr/local/ccbase/keepalived-2.0.15 && make && ...

  7. binwalk在Windows10和kali_Linux下的安装及使用教程

    (一)binwalk简介    binwalk 是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具.  具体来说,binwalk是一个固件的分析工具,旨在协助研究人员对固件非分析,提取及逆向工程 ...

  8. if (flag)

    var flag = false;//暂停标记if (flag){ alert("aa")}else { alert("bb")}bb if (flag) = ...

  9. NAT ALG原理与应用

    1  NAT ALG简介 普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多媒体协议(H.323.SIP等).FTP.S ...

  10. Ubuntu中获取和使用uiautomatorviewer

    图省事的办法是直接在网上找个android platform tools的某个版本下载下来 比如这个网站里面的:Android SDK工具——Platform-tools 个人比较倾向于先下载andr ...