美文网首页
Java基础学习之数组

Java基础学习之数组

作者: TeapotLee | 来源:发表于2018-04-26 10:59 被阅读0次

数组:指的是一组相关变量的集合

声明:

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

数据类型 []数据名称 = new 数据类型[长度]{}

分步完成:

|-声明数组:数据类型 数组名称 [] = null

|-开辟数组:数据类型 = new 数据类型[长度]

数组定义结构使用的是动态初始化的方式:即数组会首先开辟内存空间,但是数组中的内容都是其对应数据类型的默认值。

虽然数组的操作比较简单,但是其最麻烦的问题在于,他也属于引用数据类型,所以以上代码依然需要牵扯到内存分配,与对象保存唯一的区别在于:对象的堆内存保存的是属性,而数组中堆内存保存的是一组信息

引用传递的本质:同一块堆内存空间可以被不同的栈所访问。

动态初始化的操作特点:先开辟数组空间,而后维数组内容进行赋值。那么 在数组定义之中还提供有静态初始化的操作,即:数组定义的同时就设置好了相应的数据内容。

格式一:简化格式:数据类型  数据名称[] ={}

格式二:数据类型  数据名称[] =new 数据类型[]{}

在实际的工作之中,数组是会存在的,但是他的内容大部分情况下都是通过传递的数据而动态生成的,很少会出现这种新开辟数组而后去使用的情况。

虽然数组支持顺序的数据访问操作,但是数组有一个最大的缺点--长度不能改变,所以呢正因为如此,在开发之中,才不会直接去应用数组,但是会使用到数组的概念

数组与方法参数的传递:

动态初始化数组:开辟之后对象数组的内容都是null值;

声明对象数组:类名称 对象数组名称 []=null;

开辟对象数组:对象数组名称 = new 类名称[长度]

静态初始化:类名称 对象数组名称[]= new 类名称[]{实例化对象,实例化对象。。}

二维数组:

动态初始化:数据类型 数组名称 [] [] = new 数据类型[行的个数][列的个数]

静态初始化:数据类型 数组名称 [] [] = new 数据类型 [] [] {{值1,值2,值3}{值1,值2,值3}{值1,值2,值3}}

一维数组:数组中的每一个元素都是一个值(基本类型和引用类型的值)

二维数组:数组中的每一个元素又是一个一维数组

三维数组:数组中的每一个元素又是一个二维数组

数组的排序:(升序)排序的基本原理

    原始数据: 2、1、9、0、5、3、7、6、8;

    第一次排序:1、2、0、5、3、7、6、8、9;

    第二次排序:1、0、2、3、5、6、7、8、9;

    第三次排序:0、1、2、3、5、6、7、8、9;

根据数据的不同会出现不同的排序次数,但是不管有多少个数据总的排序不会超过数组的长度。所以只要排序的次数达到了“长度 * 长度”,那么所有的数据一定可以排序成功

数组的转置(首尾交换)

原始数组: 1、2、3、4、5、6、7、8;

转置后的数组: 8、7、6、5、4、3、2、1;

    利用算法,在一个数组上完成转置;

    原始数组: 1、2、3、4、5、6、7、8;

    第一次转置: 8、2、3、4、5、6、7、1;

    第二次转置: 8、7、3、4、5、6、2、1;

    第三次转置: 8、7、6、4、5、3、2、1;

    第四次转置: 8、7、6、5、4、3、2、1;

        但是以上给出的数组长度是一个偶数,如果是一个奇数呢?

        转换次数:数组长度 ÷ 2

        原始数组: 1、2、3、4、5、6、7

        第一次转置: 7、2、3、4、5、6、1

        第二次转置: 7、6、3、4、5、2、1

        第三次转置: 7、6、5、4、3、2、1

对象数组:

数组是引用类型,而类也同样是引用类型,所以如果是对象数组的话表示如果是对象数组的话表示一个引用类型里面嵌套其他的引用类型

在之前使用的数组都属于基本数据类型的数组,但是所有的引用数据类型也同样可以定义数组,这样的数组称为对象数组。如果想定义对象数组(以类为名)

动态初始化:开辟后对象数组的内容都是空值

声明并开辟对象数组 : 类名称 对象数组名称 [] = new 类名称[长度];

分布完成:

声明对象数组 : 类名称 对象数组名称 [] = null;

开辟对象数组 : 对象数组名称 = new 类名称 [ 长度 ] ;

静态初始化: 类名称 对象数组名称 [] = new 类名称[ ] { 实例化对象 , 实例化对象...}

总结:

1、数组用的很少,但是一定会用,而且数组的相关的逻辑关系比较麻烦

把数组的排序与转置要弄明白;

2、一切以一位数组为主,要明白数组的定义与内存关系(对象一致)

3、对象数组的定义语法,对象数组 = 多个对象

4、数组有一个最大的天生短板:长度固定,所以这就限制了数组在开发中的出现

5、数组的排序:java.util.Arrays.sort()

增强for循环 foreach:循环迭代

for(数组元素类型 变量 :数组名){

循环体

}

二分法查找:

数组的搜索算法:从指定数组中搜索某一元素的索引是什么

方法1:线性搜索(从头搜到尾/从尾搜到头):indexOf/lastIndexOf

对于元素过多的数组,性能极低:有N个元素,循环次数 = (N + 1) / 2;

方法2 : 二分搜索法/二分查找法

前提:数组元素必须有顺序

算法:当数据量很大适宜采用该方法。

采用二分法查找时,数据需是排好序的。

相关文章

  • ##Java学习笔记之基础类库笔记

    Java学习笔记之基础类库笔记 Object 所有类,数组,枚举类的父类 Objects(Java7新增) 工具类...

  • Java基础学习之数组

    数组:指的是一组相关变量的集合 声明: 数据类型 数组名称[] = new 数据类型[长度]{} 数据类型 []数...

  • 今天是我在乐字节学习的第21天

    今天是我在乐字节教育学习的第21天,今天主要学习的内容是Java基础-数组深入之使用和数组基本练习 使用 数组元素...

  • java基础:HashMap — 源码分析

    其他更多java基础文章:java基础学习(目录) 学习资料Java 8系列之重新认识HashMapJava集合:...

  • 今天是我在乐字节学习的第20天

    今天是我在乐字节教育学习的第20天,今天主要学习的内容是Java基础-数组深入之概述和定义 概述 数组是相同类型数...

  • 从Android到Java(二)

    Java基础知识填坑继续。 Java 集合与泛型 数组 VS ArrayList 数组大概是我们学习任何语言时接触...

  • Java基础之数组

    (1)数组:存储同一种数据类型的多个元素的容器(注意和集合的区别 后面的总结之中有)。 (2)特点:每一个元素都有...

  • Java基础之数组

    数组是什么:数组是一种数据结构,用来存储同一数据类型的集合。通过一个整型下标可以访问数组中的每一个值。声明格式:数...

  • Java基础之数组

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

网友评论

      本文标题:Java基础学习之数组

      本文链接:https://www.haomeiwen.com/subject/hkjplftx.html