java基础——数组

1.什么是数组?

数组一种比较特殊的容器,因为数组的定义是:
数组是一种连续的内存空间的分配

1.数组就是一片地址连续且空间大小一致的存储空间(但是每个空间存的还是 其他数据的地址。
2.数组存在于堆内存中,但凡在堆中存储的数据都称之为对象。
数组提供角标来访问数组当中的元素。
3.数组变量存的就是数组在堆内存中首元素的地址。
4.数组通过角标来访问元素的具体计算方式是:所要访问数据的地址 = 首元素地址 + 角标 * 数据类型大小。
5.数组一旦定义下来,其长度不可改变;数组中有几个地址?就看数组有几个元素空间(数组的长度)。
6.创建数组时必须明确规定大小或内容。

2.如何定义数组?

1、数据类型[] 变量名称 = new 数据类型[大小];
2、在定义的同时,将元素的值也初始化了
数据类型[] 变量名称 = new 数据类型[]{元素1, 元素2……}
3、第二种的简化方式
double[] prices = {6.56, 3.58, 10, 20, 30};
System.out.println(prices[1]);

3.常用数组操作

数组遍历

public class ArrayTraversal {
   public static void main(String[] args) { 
       int[] arr = new int[] { 1, 2, 3, 4, 5, 6 };
       for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]); 
       }
       for (int i : arr) { 
          System.out.println(i); 
       } 
  } 
}

数组扩容

public class ArrayExpansion { 
     public static void main(String[] args) { 
          int[] arr = new int[] { 1, 2, 3, 4, 5, 6 };
          arr = arrayExpansion(arr, arr.length + 1); 
          }
          private static int[] arrayExpansion(int[] origin, int newLen) { 
                int[] newArr = new int[newLen];
                for (int i = 0; i < origin.length; i++) { 
                    newArr[i] = origin[i]; 
                }
                    return newArr; 
          } 
 }

示例:请输入10位同学的java成绩,
1、求平均成绩,最高成绩、最低成绩

package com.openlab.day14.array;

import java.util.Scanner;

public abstract class Test {

	public static void main(String[] args) {
		double[] scores = new double[10];
		double sum = 0, max = 0, min = 0;
		Scanner sc = new Scanner(System.in);
		
		for (int i = 0; i < scores.length; i++) {
			System.out.print("请输入第"+ (i+1) +"个同学的成绩:");
			scores[i] = sc.nextDouble();
			
			sum += scores[i];
			if (i == 0) {
				max = scores[i];
				min = scores[i];
			} else {
				if (max < scores[i]) {
					max = scores[i];
				}
				if (min > scores[i]) {
					min = scores[i];
				}
			}
			
		 }
		sc.close();
		
		System.out.println("\n"+"平均成绩:"+ (sum / scores.length));
		System.out.println("最高成绩::"+ max);
		System.out.println("最低成绩::"+ min);
		
	}

}

4.二维数组

定义二维数组
int [] [] scores;//定义二维数组
scores = new int [3][5];//分配内存空间
或者int [] [] scores = new int [3][5];
注:int [] [] scores = new int [][]; 这样写是错误的必须给二维数组分配内存空间 第一个括号是给二维数组分配内存空间的

如何赋值?
1.int [][] a={{1,2,3},{2,3,4},{4,5,6}};
2.a[0][1]=5;
定义方式

//创建一个3行4列的二维数组,元素默认都是0
 int[][] matrix = new int[3][4]; 
 //创建个指定元素的二维数组 i
 nt[][] matrix = new int[][]{ { 1, 2, 3, 4 } , 
                                         { 5, 6, 7, 8 } , 
                                        { 9, 10, 11, 12 } };
 //锯齿矩阵
  int[][] matrix = { { 1, 2, 3, 4 } ,
                       { 5, 6, 7 } , 
                       { 8, 9 }, 
                       { 10 } };

5.Arrays数组工具类

使用前加载 java.untin.Array包

1.Array.sort(数组名) 对数组里面的元素进行升序排序
注意:不能够对boolean类型的数组进行排序。

2.Arrays.binarySearch() 查找某个元素在数组中的位置(数组一定是升序排列的数组)

3.Arrays.toString() 将数组转为字符串

4.Arrays.equals方法比较两个数组是否相等(这两个数组同一个类型的)
如果两个数组相等返回值是true,否则返回值是false
两个数组相等的含义: (1)长度要相等 (2)数组中每个位上的元素值要相等

5.Arrays.fill(array,val) 把数组array所有元素都赋值为val

6.Arrays.copyOf 将原数组中的元素拷贝到新的数组中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值