数组及典型应用

一、学习目的

理解数组的作用

掌握数组的定义

掌握数组常用的操作:获取最大(最小)值,数字排序,扩容

Arrays数组工具类

二维数组

二、数组

数组是一个变量,存储相同数据类型的一组数据。

当变量比较多时一个一个定义比较麻烦,数组可以一次性定义多个数据类型相同的数据。

数组的内存地址归根结底来说也只有一个地址,

只不过在这一个地址里面还有若干个小的地址。

数组的本质就是一个变量。

数组类型+数组名+数组长度

数组中的那个中括号前后要加上一个空格但是里面不做要求。

数组也是引用类型,即使是int也是引用类型。

数组的基本要素:标识符(数组名),数组元素(值),元素下标(从0开始),元素类型。

使用数组:

1、声明数组并分配空间:int [] a = new int[5];

2、赋值:a[0]=8;

3、处理数据:a[0]=a[0]*10;

静态数组(设置了固定的长度里面内容为空):int [] a = new int[5];

特点: 数组长度固定,不能扩容

           全部数据都有初始值

           可以进行重新的赋值

数组赋值的两种方式:

边声明边赋值:int [] b ={1,2,3,4,5};

动态地从键盘输入信息并赋值:scores[i] = input.nextInt();

三、数组的操作

求最值的思想:

打擂台的思想:先定义一个最值,再通过数组的遍历用循环进行依次的比较重新赋值来求得最值。

int max = stu[0];

for(int i =0;i

        if(stu[i]>max){

                max=stu[i];

        }

}

冒泡排序:第一次到最后一次循环比较依次把最大到最小的数值得出。

神奇口诀(升序):

        N个数字来排队

        两两相比小靠前

        外层循环n-1

        内层循环n-1-i

使用Arrays为数组排序:使用java.util.Array类。

Arrays.sort(数组名);(升序)

Arrays类的一些常用方法:

boolean equals(array1,array2):比较array1和array2两个数组是否相等。

sort(array):对数组array的元素进行升序排列。

String toString(array):将一个数组array转换成一个字符串。

void fill(array,val):把数组array所有元素都赋值为val。

copyOf(array,length):把数组array复制成一个长度为length的新数组,返回类型与复制数组一致。

int binarySearch(array, val):查询元素值val在数组array中的下标(数组中元素已经为升序)。

四、多维数组

三维及以上的数组很少使用

主要使用二维数组

从语法上Java支持多维数组

从内存分配原理的角度讲,只有一维数组

二维数组:一个以一堆数组作为元素的一维数组,需要定义最大维数(第一个中括号不为空)。

<数据类型>  [ ][ ]  数组名或者  <数据类型数组名 [ ][ ];

定义并赋值:

写法一:int[][] scores=new int[][]{ { 90, 85, 92, 78, 54 }, { 76, 63,80 }, { 87 }};

写法二:int scores[][] = {{ 90, 85, 92, 78, 54 }, { 76, 63,80 }, { 87 } };

五、数据类型

引用数据类型:String,java类(class)、接口(interface)、数组(array)、枚举(enum)等都是引用类型,所有引用类型的默认值为NULL,一个引用变量可以用来引用任何与之兼容的类型。

引用数据类型在栈中存储的是一个地址,这个地址指向堆(heap)中的实际数据。

引用数据类型是存储对象的引用或地址,

引用数据类型是存储指向对象的引用

引用数据类型的默认值是null。

引用数据类型的传递是按引用传递引用数据类型的值在传递时是引用的副本,传递的数据改变时原有的数据会被改变。

基本数据类型(CPU可以直接进行运算的类型):整数型:byte、short、int、long,浮点型:float、double,字符型:char,布尔型:Boolean。

基本数据类型是直接存储在栈(stack)中的

基本数据类型是存储数据的简单类型

 基本数据类型是直接存储值

基本数据类型的默认值是0或false

基本数据类型的传递是按值传递基本数据类型的值在传递时是复制的,当传递的数据改变时不会改变原有的数据。

补充知识:for each循环遍历:(不好在中途停止)

for(String str :slist){

System.out.print("输出"+str)

}

六、总结

        数组的定义,使用数组的基本的步骤,遍历一个数组的步骤,求最值的方法,冒泡排序的思路,遍历二维数组的思路,基本数据类型和引用数据类型的区别等。

你可能感兴趣的:(算法)