A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

数组:存储同一种数据类型的多个元素的容器
    虽然数组的操作比较简单。但是其最麻烦的问题在于它也属于引用数据类型,也需  内存分配,与对象保存的唯一的区别在于:对象中的堆内存保存的是属性,而数组中的队内存保存的是一组信息。
A、数组类型[] 数组名;()推荐
int[] arr;定义了一个int类型的数组,数组名是arr
B、数组类型[] 数组名;
int arr[] ;定义了一个int类型的变量,变量名是arr数组


数组初始化:为数组开辟内存空间,并为数组的每个元素赋予初始值
·动态初始化:只给出长度,由系统给出初始值
数据类型 数组名称[]=new 数据类型[数组的长度];

·静态初始化给出初始值,由系统决定长度
数据类型 数组名称[]=new 数据类型[][]{值,值,... };

栈:存储的局部变量
堆:存储的对象

file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(14).png
既然数组属于引用数据类型,那么数组一定可以发生引用传递
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(15).png
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(16).png
以上数组的定义格式严格来讲是动态初始化,操作特点是:先开辟数组空间,然后为数组中的内容进行赋值
在数组的定义之中还提供有静态初始化的操作,即数组定义的同时就设置好了相应的内容
   ·格式1:简化格式
数组类型 数组名称[]={值,值,...};
      ·格式二:完整格式
数组类型 数组名称[]=new 数据类型[]{值,值,...};
   ·数组的静态初始化
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(17).png
虽然数组支持顺序的访问操作,但是数组有一个大的缺点---长度不能够被改变,正因为这样,在我们的开发之中不会直接应数组,但会在使用个数组额度概念。
二维数组:
定义语法:
    ·动态初始化:
数据类型 数组名称[][]=new 数据类型[行的个数][列的个数];

   · 静态初始化
数据类型 数组名称[][]=new 数据类型[][]{{值,值,... },{值,值,... }};

file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(18).png
数组方法参数的传递:
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(19).png
输出结果:2  4  6
数组的引用传递过程:
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(20).png
在进行数组的引用传递过程中,方法对数组的修改一定会影响到原始数据
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(21).png
总的排序次数不会超过数组的长度
只要数组的排序次数达到了长度*长度,那么所有数据一定排序成功
    ·改善设计: 主方法实际上是程序的起点存在,所有程序的起点都可以叫做客户端,既然是客户端所有的代码编写一定要简单,可以调用方法进行封装。
转置:
定义一个新的数组,然后将原始数组按照倒序方式插入新数组
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(22).png
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(23).png
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(24).png
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(25).png
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(26).png
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(27).png

file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(28).png
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(29).png
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(30).png
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(31).png
以上给出的是一个等行等列的数组,如果不一样呢?
1    2    3
4    5    6
开辟一个新的数组,数组的行数等于原始数组的列数,数组的列数等于原始数组的行数。
需要改变原始数组的引用,会产生垃圾。

以上实现了方法接收数组操作情况,同样方法也可以返回数组
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(32).png
重点关注方法的返回值即可。
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(33).png

数组的操作方法:
Java本身对于数组是有提供类库支持的,下面来说两个与数组有关操作的方法
1、数组拷贝:可以将一个数组的部分内容拷贝到另一个数组中
语法:System.array(源数组名称,源数组拷贝开始索引,目标数组名称,目标数组拷贝开始索引,长度)
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(34).png
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(35).png
2、数组排序:之前给出了排序的基本操作,但是在开发里如果要进行排序,则如下:
java.util.Arrays.sort(数组名称);
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(36).png
对象数组(重点):
数组是引用类型,而类也得引用类型,所以如果是对象数组的话表示一个引用类型里面嵌套其他的引用类型。在之前使用的数组都属于基本数据类型的数组,但是所有的引用数据类型也同样可以定义数组,这样的数组称为对象数组。如果要想定义对象数组(以类为例),可以采用如下形式完成:
   ·动态初始化:开辟只有对象数组的内容都是null值
声明并开辟对象数组:类名称 对象数组名称[]=new 类名称[长度];
  分步完成:
    声名对象数组::类名称 对象数组名称[]=null;
开辟对象数组:对象数组名称[]=new 类名称[长度];

  ·静态初始化:
类名称 对象数组名称[]=new 类名称[]{实例化对象,实例化对象,...};
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(37).png
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(38).png
输出都为null(三行)
动态初始化:
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(39).png

静态初始化

file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(40).png
输出结果:

file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(41).png
对象数组实际上就是将多个对象交给数组统一管理
总结:
file:///C:/Users/www/AppData/Local/Temp/enhtmlclip/Image(42).png


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马