DAY08------java数组、操作、冒泡、排序、array类、for each(全)

来源:互联网 发布:淘宝ifashion怎么报名 编辑:程序博客网 时间:2024/05/17 07:30


数组



是java中的一种基本存储数据的集合,目的是存储相同类型下的多个不同元素,并且可以多数组中的元素进行增删改查操作。

优点

1 数组对每个元素都有特点的编号,从0开始,方便对数组进行操作

2 使用java数组必须先声明数组,再给该数组分配内存

3 数组对应内存中一段连续的空间

4 数组元素必须是相同类型,也可以使引用数据类型,但是同一数组中的元素必须是同类型

一维数组:可以理解为一行多列、类型相同的数据,其中每个数据被称为数组元素

int  varName[];

int[]  varName;

数组的长度一旦确定就不能更改。

java声明数组的时候不能指定其长度(元素的个数)

java中的数组必须先初始化后才能使用,初始化时由我们指定初始化的元素,系统自动决定数组的长度

格式:数组名=new 数组类型[]{元素1,元素2,元素3...元素n};

静态初始化:数组名={元素1,元素2...}

动态初始化:数组名=new 数组类型[数组长度];

注:不能静态和动态同时使用,不能同时指定数组的长度和元素


package com.itheima;public class Test9910{public static void main(String[] args){//定义一个数组int [] age = new int[10];//10为数组的长度,定了长度就不能同时定义元素int sex[] = {1,2,3,4,5,6,7,8};//直接赋值定义元素//定义动态初始化数组for(int i=0;i<age.length;i++){age[i]=i;int k=1;sex[k]=age.length-i;System.out.print(sex[k]+"+K");System.out.println(age[i]+"");}}}

运行结果:

10+K 0

9+K1
8+K 2
7+K 3
6+K 4
5+K 5
4+K 6
3+K 7
2+K 8
1+K 9

数组求最大值:

int max=age[0];//将数组赋初值给max

for(int i=0;i<age.length;i++){//采用循环增量一个个与max比较

if(max<age[i]){//如果大则替换当前max的值

max=age[i];//当前大则赋值

}

}


排序经典算法:冒泡排序

package com.itheima;import java.util.Arrays;public class Test9910{public static void main(String[] args){//定义一个数组int count1[] = {1,2,3,84,5,9,16,87,8,99};//定义动态初始化数组for(int i=0;i<count1.length;i++){//循环读取数组从第一个加载到最后一个数组for(int j=i+1;j<count1.length-1;j++){ //j是第二个数,也是依次加载if(count1[i] > count1[j]){ //判断第一个大于第二个数int temp =count1[i];//初始化临时存储数组空间,将一个数赋值给它count1[i]=count1[j];//将第2个数赋值给第一个数count1[j]=temp;//将第2个数赋值给临时空间 完成交换}}}System.out.println("冒泡排序结果为:"+Arrays.toString(count1));}}

冒泡排序结果为:[1, 2, 3, 5, 8, 9, 16, 84, 87, 99]

分配内存空间

数组名=new 数据类型[数组长度];

new 是用来实现为数组或对象分配内存

数组有固定长度,获取数组的长度用 数组名.length的方式


定义数组+分配空间

数组类型[]数组名=new 数据类型[数组长度];

定义数组时不指定长度,分配空间时指定数组长度;

String city[]=new Srting[7];


数组元素:

数组名[下标值];

city[0]=shanghai;


在方法中定义变量,包括基本数据类型变量和引用数据类型变量,都将在栈内存

中分配空间,当超过变脸作用范围后,自动回收。

初始化=定义数组+分配空间+赋值


二维数组:

二维数组其实就是一个一维数组,他的每个元素又是一个一维数组

动态初始化:

int[][] arr =new int[3][4];

定义了一个二维数组,其中有3个一维数组,每一个一维数组中有2个元素

静态初始化:

int[][] arr =new int[][]{{1,2},{2,2},{3,3}};

int[][] arr ={{1,2},{2,2},{3,3}};



操作数组的工具类------Arrays


static int binarySearch(type[] a,type key)使用二分查找搜索key元素 无则返回负数

static int binarySearch(type[] a,int fromIndex,int toIndex,type key)使用二分搜索从formindex到toindex的key元素,无返回负数

static boolean[] copyOf(type[] original,int newLength)复制指定的数组

static byte[] copyOfRange(type[] orginal,int form,int to)将数组的指定范围复制到一个新数组中

static boolean equals(type[] a,type[] a2)如果2数组长度和元素一一相等,返回ture

static void fill(type[] a,type val)将a数组所有元素都赋为val

static void sort(type[] a)将数组按照升序排序

static void toString(type[] a)返回指定数组内容的字符串表示形式,多个数组元素之间用逗号隔开


使用数组工具类可以节省开发时间,注意查阅api




Java5 的新特性对数组的支持

增强for循环 for each

for(参数类型 参数名:数组名){

代码块;

}

package com.itheima;//使用java5中的数组新特性 实现如for each遍历的方式输出数组元素public class Test9910{public static void main(String[] args){int age[]={1,2,3,45,6,6,7,86,8};for(int i:age){System.out.print(i+"");}}}


使用该方法就把数组遍历出来了for-each

for-each用于数组和Iterable对象的元素遍历,集合中常用到


---------------------- 拖走FM----期待与您交流! --------

收音机,电台,网上电台,广播,在线广播,网络广播,广播电台,网络电台,在线电台,电台在线收听,广播电台在线收听,网络电台在线收听,在线收听电台,fm收音机,网络收音机,广播下载,在线收音机,收音机软件下载,电台软件下载,网络收音机下载--------------

---------------------- 拖走FM----期待与您交流! --------


0 0
原创粉丝点击