length函数java数组_数组 Array-java

Java 数组

重要的数据结构之一,用来存储固定大小的同类型元素

数组声明

创建数组

处理数组

for-each

数组作为函数的参数

数组作为函数的返回值

多维数组

Arrays类

数组声明

语法格式:

dataType[] arrayRefvar;//首选方法

//或者

dataType arrayRefVar[];

创建数组

通过new来创建数组

arrayRefVar = new dataType[arraySize];

dataType[arraysize]创建了一个数组

把新创建的数组引用赋值给变量arrayRefVar

声明和创建一条语句完成

dataType[] arrayRefVar = new dataType[arraySize]

或者

dataType[] arrayRefVar = {value0,value1,value2...};

数组元素通过下标索引访问的。

示例:包含十个double数据类型元素的数组

public classTestArray {public static voidmain(String[] args) {//数组大小

int size = 10;//定义数组

double[] myList = new double[size];

myList[0] = 5.6;

myList[1] = 4.5;

myList[2] = 3.3;

myList[3] = 13.2;

myList[4] = 4.0;

myList[5] = 34.33;

myList[6] = 34.0;

myList[7] = 45.45;

myList[8] = 99.993;

myList[9] = 11123;//计算所有元素的总和

double total = 0;for (int i = 0; i < size; i++) {

total+=myList[i];

}

System.out.println("总和为: " +total);

}

}

处理数组

数组元素的类型和数组大小都是确定的,通常使用for-each循环

示例

public classTestArray {public static voidmain(String[] args) {double[] myList = {1.9, 2.9, 3.4, 3.5};//打印所有数组元素

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

System.out.println(myList[i]+ " ");

}//计算所有元素的总和

double total = 0;for (int i = 0; i < myList.length; i++) {

total+=myList[i];

}

System.out.println("Total is " +total);//查找最大元素

double max = myList[0];for (int i = 1; i < myList.length; i++) {if (myList[i] > max) max =myList[i];

}

System.out.println("Max is " +max);

}

}

for-each

jdk1.5引进的一种新的循环类型,被成为for-each循环或增强for循环,可以不通过下标遍历数组。

语法格式:

for(type element:array){

System.out.println(element);

}

示例

public classTestArray {public static voidmain(String[] args) {double[] myList = {1.9, 2.9, 3.4, 3.5};//打印所有数组元素

for (doubleelement: myList) {

System.out.println(element);

}

}

}

数组作为函数的参数

示例

public static void printArray(int[] array) {for (int i = 0; i < array.length; i++) {

System.out.print(array[i]+ " ");

}

}

数组作为函数的返回值

示例

public static int[] reverse(int[] list) {int[] result = new int[list.length];for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {

result[j]=list[i];

}returnresult;

}

多维数组

即是数组的数组。

多维数组动态初始化

语法格式:type[] typeName = new type[typeLength1][typeLength2];

type可以是基本数据类型和复合数据类型

例如:int a[][] = new int[3][2];

多维数组的引用

语法格式:arryName[index0][index1]

例如:num[1][2];

Arrays类

可以更方便的操作数组,提供的方法都是静态的

给数组赋值:fill方法

数组排序:sort方法,升序

比较数组:通过equals方法比较数组中元素值是否相等

查找数组元素:通过binarySearch方法能对排序好的数组进行二分法操作

编号方法说明

1

public static binarySearch(Object[] a ,Object key)

用二分法查找,数组使用前必须是排序好的,在数组中返回下标

2

public static boolean equals(Long[] a, Long[] a2)

指定两个类型相同的数组,如果包含同等数量元素,并且所有元素都是对等的,则是真

3

public static void fill(int[] a,int val)

将指定的int值分配给指定int类型数组指定范围中的每个元素。

4

public static void sort(Object[] a)

对指定对象数组根据其元素的自然顺序进行升序排列

练习案例

1. 倒序练习

public classTest2 {public static voidmain(String[] args){int[] test= {1,2,4,5,7};for (inti : test) {

System.out.print(i+" ");

}

System.out.println("\n");

test=Test2.reverse(test);for (inti : test) {

System.out.print(i+" ");

}

}public static int[] reverse(int[] arr){int[] result = new int[arr.length];for (int i = 0,j=result.length-1; i < arr.length; i++,j--) {

result[j]=arr[i];

}returnresult;

}

}

2. 数组和字符串的转换

public classTest {public static voidmain(String args[]) {

String str= "helloworld";char[] data = str.toCharArray();//将字符串转为数组

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

System.out.print(data[x]+ " ");

data[x]-= 32;

System.out.print(data[x]+ " ");

}

System.out.println(newString(data));

}

}

3. 冒泡排序

public classBubbleSort {/*** N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。

*@paramargs*/

public static voidmain(String[] args) {int arr[] = {26,15,29,66,99,88,36,77,111,1,6,8,8};for(int i=0;i < arr.length-1;i++) {//外层循环控制排序趟数

for(int j=0; j< arr.length-i-1;j++) {//内层循环控制每一趟排序多少次//把小的值交换到前面

if (arr[j]>arr[j+1]) {int temp =arr[j];

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

arr[j+1] =temp;

}

}

System.out.print("第"+(i+1)+"次排序结果:");//列举每次排序的数据

for(int a=0;a

System.out.print(arr[a]+ "\t");

}

System.out.println("");

}

System.out.println("最终排序结果:");for(int a = 0; a < arr.length;a++) {

System.out.println(arr[a]+ "\t");

}

}

}

4. 选择排序

public classStart

{public static voidmain(String[] args)

{int[] arr={20,60,51,81,285,12,165,51,81,318,186,9,70};for(inta:arr)

{

System.out.print(a+" ");

}

System.out.println("\n"+"---------------从小到大---------------");

arr=toSmall(arr);for(inta:arr)

{

System.out.print(a+" ");

}

System.out.println("\n"+"---------------从大到小---------------");

arr=toBig(arr);for(inta:arr)

{

System.out.print(a+" ");

}

}//从大到小

public static int[] toSmall(int[] arr)

{//遍历数组里除最后一个的其他所有数,因为最后的对象没有与之可以相比较的数

for(int i=0;i

{/*遍历数组里没有排序的所有数,并与上一个数进行比较

*“k=i+1”因为自身一定等于自身,所以相比没有意义

*而前面已经排好序的数,在比较也没有意义*/

for(int k=i+1;k

{if(arr[k]

{int number=arr[i];

arr[i]=arr[k];

arr[k]=number;

}//交换

}

}returnarr;

}//从小到大//和前面一样

public static int[] toBig(int[] arr)

{for(int i=0;i

{for(int k=i+1;k

{if(arr[k]>arr[i])

{int number=arr[i];

arr[i]=arr[k];

arr[k]=number;

}

}

}returnarr;

}

}

arrays方法使用

importjava.util.Arrays;public classTestArrays {public static void output(int[] array) {if (array != null) {for (int i = 0; i < array.length; i++) {

System.out.print(array[i]+ " ");

}

}

System.out.println();

}public static voidmain(String[] args) {int[] array = new int[5];//填充数组

Arrays.fill(array, 5);

System.out.println("填充数组:Arrays.fill(array, 5):");

TestArrays.output(array);//将数组的第2和第3个元素赋值为8

Arrays.fill(array, 2, 4, 8);

System.out.println("将数组的第2和第3个元素赋值为8:Arrays.fill(array, 2, 4, 8):");

TestArrays.output(array);int[] array1 = { 7, 8, 3, 2, 12, 6, 3, 5, 4};//对数组的第2个到第6个进行排序进行排序

Arrays.sort(array1, 2, 7);

System.out.println("对数组的第2个到第6个元素进行排序进行排序:Arrays.sort(array,2,7):");

TestArrays.output(array1);//对整个数组进行排序

Arrays.sort(array1);

System.out.println("对整个数组进行排序:Arrays.sort(array1):");

TestArrays.output(array1);//比较数组元素是否相等

System.out.println("比较数组元素是否相等:Arrays.equals(array, array1):" + "\n" +Arrays.equals(array, array1));int[] array2 =array1.clone();

System.out.println("克隆后数组元素是否相等:Arrays.equals(array1, array2):" + "\n" +Arrays.equals(array1, array2));//使用二分搜索算法查找指定元素所在的下标(必须是排序好的,否则结果不正确)

Arrays.sort(array1);

System.out.println("元素3在array1中的位置:Arrays.binarySearch(array1, 3):" + "\n" + Arrays.binarySearch(array1, 3));//如果不存在就返回负数

System.out.println("元素9在array1中的位置:Arrays.binarySearch(array1, 9):" + "\n" + Arrays.binarySearch(array1, 9));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值