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

JavaSe基础(4)---数组

2016-03-24 08:47 453 查看

0x01、引言 为什么要有数组

如果需要保存100个学员的成绩,如何做?

int a=12;

int b=13;

int c=14;

int d=15;

定义100个变量?NO, 我们可以使用数组

0x02、什么是数组?

一组具有相同数据类型的有序的集合(数据结构)

0x03、数组三个特点?

a、数组的长度固定 一旦定义就不可以改变 不可改变

b、数组中的元素可以基本数据类型 也可以是引用数据类型 但是数组本身 是引用数据类型

c、数组中的元素是有顺序

0x04、数组的声明有几种方式

0x05、数组定义的格式

格式1:

元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

示例:int[] arr = new int[5]; // arr是什么数据类型? 是数组类型 int是元素类型 []就代表数组

格式2:

元素类型[] 数组名 = new 元素类型[]{元素,元素,……};

int[] arr = new int[]{3,5,11,18};

int[] arr = {3,5,11,18};

数组里面的元素个数比较多,为了方便操作这些元素,会自动的给数组中的元素进行编号,

从0开始的,这些编号---下标(角标),最大下标值为(长度-1)

可以自动给数组中的元素从0开始编号,方便操作这些元素。

总结:无论是更改和获取 都是通过 数组名称[下标] 的形式进行的;

0x06、数组的长度如何获取?数组下标的最大值是多少?

length 是属性

0x07、如何获取数组中的元素值?

数组名称[数组下标]

0x08、数组的初始化方式有几种

三种

1、默认初始化 为数组分配空间 并添加默认值 比如 int[] a = new int[12];

2、静态初始化 定义数组的时候 就进行赋值

比如:String[] str= new String[]{"one","two","three"};

int[] arr = {3,5,11,18};

3、动态初始化 为数组分配空间和赋值 动作分开进行

比如: String[] one = new String[7];

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

{

one[i] = i*100+"";

}

0x09、数组的拷贝如何实现?

0x10、数组的排序、查找、复制、填充如何操作?

java.util 类 Arrays 从以下版本开始: 1.2

Arrays.toString() 将数组打印

Arrays.sort() 给数组排序

Arrays.binarySearch() 查找数组中某个元素 所在位置 注意 使用前要排序

System.arrayCopy() 从一个数组中复制一些元素 到目标数组中

String类型 转化为byte[] (字节数组)

String str = "asdfghjkl";

byte[] one = str.getBytes();//将String 变为字节数组

//byte[](字节数组) 转化为 String类型

byte[] two = {1,2,3,4,5};//定义了一个字节数组

String strOne = new String(two);//将字节数组中所有的元素 变为String

String strTwo = new String(two,1,3);//将字节数组中 从下标为1的位置开始,取三个字节数组元素

//并将取出的部分变为String

0x12、数组中的数组 二维数组[][]( 了解 )

格式1:int[][] arr = new int[3][2];

定义了名称为arr的二维数组

二维数组中有3个一维数组

每一个一维数组中有2个元素

一维数组的名称分别为arr[0], arr[1], arr[2]

给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;

格式2:int[][] arr = new int[3][];

二维数组中有3个一维数组

每个一维数组都是默认初始化值null

可以对这个三个一维数组分别进行初始化

arr[0] = new int[3];

arr[1] = new int[1];

arr[2] = new int[2];

格式3:int[][] arr = {{3,8,2} ,{2,7} , {9,0,1,6}}; // 二维数组中 的每一组{}代表了一个一维数组

定义一个名称为arr的二维数组

二维数组中的有三个一维数组

每一个一维数组中具体元素也都已初始化

第一个一维数组 arr[0] = {3,8,2};

第二个一维数组 arr[1] = {2,7};

第三个一维数组 arr[2] = {9,0,1,6};

第三个一维数组的长度表示方式:arr[2].length;

说明:

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

System.out.println(arr.length);//打印二维数组的长度。其实就是一维数组的个数。

System.out.println(arr[1].length);//打印二维数组中角标为1一维数组的长度。

应用:计算总和的时候比较多 比如:成绩、业绩等等

int sum = 0;

int[][] arr = {{30,20,50},{10,20,30,40},{90,10}};

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

{

for(int y=0; y<arr[x].length; y++)

{

// System.out.print(arr[x][y]+",");

sum += arr[x][y];

}

}

System.out.println("sum="+sum); //计算数组中元素的和

0x13 冒泡方式实现

/**

* 自己定义的冒泡排序

* @param arr int元素 类型的数组

* 比较的是两个相邻的元素

* 如果第一元素 比第二种元素大

* 则将两个位置元素进行交换

*/

public static void mySort(int[] arr){// 面试前 背一下

for( int i=0; i<arr.length-1 ;i++ ){//最后一个元素 没有必要和自己进行比较

for( int j=0; j<arr.length -1 -i; j++ ){//-1为了避免下标越界 -i是为了提高 判断的效率

if(arr[j]>arr[j+1]){//判断两个相邻的元素 大小

int temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

// System.out.print("*");

}

}

// System.out.println();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: