您的位置:首页 > 编程语言 > Java开发

第八讲 数组的定义与四种赋值方式、遍历和内存分析

2017-12-06 10:51 429 查看
导读

关于Java数组,它是一种数据的容器。但这种容器是有规定,不同数据类型的容器,会存储不同的数据。

整数有int类型的数据——

注意:数组的元素是怎么确定位置的呢,对,就是从0开始的,最后一个是arr.lenght-1(最后一个)。

数组的定义及赋值方式:

①、第一种方式:int[]  arr = {1,2,3,4,5,6,7,8,9,10}; 

②、第二种方式:int[] arr = new int[]{20,30,40};

③、第三种方式:int[] arr = new int[3]; 

arr[0] = 11'

arr[1] = 12;

arr[2] = 13;

这是Java的一维数组,可以保存单个与之对应的变量。

int a = 10;

int b = 20 ;

// 这样是可以的,因为a和b都是int类型——

int arr = {a,b};

其实第四种赋值方式,可以变为数组拷贝就可以完成赋值功能!!!

====================================================

数组的遍历分两种:

一、for循环

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

{

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

}

二、Arrays工具类

//  因为Arrays工具类已经封装了对数组的元素的打印——

System.out.println(Arrays.toString(arr));

内存分析:

因为Java数组是一个引用类型数据类型,因此它需要使用到Java的关键字:new 

但为什么它还可以定义:int[] arr = {}; // 这种方式,因为它已经隐式地帮我们调用了构造器,JVM是这样的,它是方法的多态性的,也就是说它先识别int[]是一个数组,根据JVM编译规则的语法推断,赋值的过程必须是要求对象来处理,所以它调用了它的构造器来实例化,这样做就是构造器的创建会做三件事:

①、开辟内存空间

②、调用构造器并初始化

③、将生成的地址返回

【这就是类的实例化过程】——

栈内存堆内存
arr= {1,2,3,4};
Clazz c= new Clazz();
如果,将地址返回,那么这个值就是一个hashCode和十六进制数据!

小例子培养编程思维:

题目:把一个无序数组排序,并且找到最小值和最大值,请问您怎么样设计最快速!

分析:有两种方式,第一种是自己编写算法处理,然后调用即可。第二种,如下:

int[] arr = {12,1,10,3,2,18,23,45};

Arrays.sort(arr); // 我们有工具类,为什么不用呢?对不对!这样就快速按升序排列元素了。

// 获取第一个(其实就是最小值)

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

// 获取最后一个(其实就是最大值了)

System.out.println(arr[arr.length-1]);

小结:

我之所以这样写这个小例子,不是说必须要这样做。

而是想透过这样的一个理念来告诉大家一句话:如果日常开发中,时间比较紧迫。

但您有不想自己去处理这些业务的话,ok~您可以采用工具辅助开发的办法来处理业务是完全没有问题的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息