Java 数组详解:一维数组+二维数组+数组拷贝
一.一维数组
(1)数组是什么
数组可以装一组相同数据类型数据的容器(变量)
数组是一个可以装其它数据(基本类型数据或者引用类型数据即对象)的容器
它也是一个对象的,也是在堆空间里分配
数组类型本身是一个引用类型(由其它类型加上[])
int a = 9; - 基本数据类型
int[] ages = new int[20] - 引用类型
(2)声明
1
int[] arr ;//声明数组变量
arr = new int[3];//给数组分配内存空间,而且默认值是0
2
int[] arr = new int[3];//定义一个数组变量,并分配内存空间,默认值为0
(3)初始化
1 声明和初始化分开
int[] arr = new int[3];//给数组变量分配内存空间,赋以相应数据类型的默认值。
arr[0] =3;
arr[1] =7;
arr[2] =9;
java.lang.ArrayIndexOutOfBoundsException
数组下标越界异常。
2 声明和初化合在一起
int[] arr = new int[]{3,7,9};
int[] arr = {3,7,9};
数组的每个元素都有一个下标,从0开始,最后一个下标长度-1
(4)内存情况
基本类型的数组
int[] arr = new int[3];
arr[0] = 6;
引用数据类型的数组
Dog[] dogs = new Dog[3];
dogs[0] = new Dog();
(5)length属性
数组有下标,从零开,每个数组内部都有一个属性:length,用于获取数组长度
数组下标和属性length的关系
最大的下标 =length-1
java.lang.ArrayIndexOutOfBoundsException - 数组下标越界异常
访问了超过最大下标的元素
面试:
是非题:字符串(String)有一个length属性,数组有一个length()方法
(6)遍历
1 含义:
也称迭代,就是循环访问数组中的每个元素
2 如何遍历
for()
3 下标越界异常
java.lang.ArrayIndexOutOfBoundsException
当下标超过数组的最大下标时(length-1),就报出上面的错误
(7)获取最大最小元素
int[] arr = {2,3,9,9,2,3,5,1,3,4,7}; int max =arr[0]; for(int i=1;i<arr.length;i++){ if(arr[i]>max){ max = arr[i]; } } System.out.println("最大的元素是:"+max); int min =arr[0]; for(int i=1;i<arr.length;i++){ if(arr[i]<min){ min = arr[i]; } } System.out.println("最小的元素是:"+min);
(8)冒泡排序
int[] ages = {3,2,4,1,3,7,89,4,3,5,6,43,21,2,35}; for (int i = 0; i < ages.length-1; i++) { for (int j = 0; j < ages.length-1-i; j++) { if (ages[j]>ages[j+1]) { int temp = ages[j]; ages[j] = ages[j+1]; ages[j+1] = temp; } } }
二.二维数组
(1)声明,初始化
//1 单独声明 int[][] arr = new int[2][3]; int[][] arr = new int[2][];//允许第二维没有长度//2 与初始化一起 数组里面装数组 int[][] arr = new int[][]{{1,2,3},{4,5,6}}; int[][] arr = new int[][]{{1,2,3},{4,5}}; int[][] arr = {{1,2,3},{4,5}};//3 单独初始化 int[][] arr1 = new int[2][3]; arr1[1][1] = 8;
(2)内存情况
第1种内存情况
int[][] arr = new int[2][3];
第2种内存情况
int[][] arr = new int[2][];//允许第二维没有长度
//arr[1][1]=8;//NullPointException
arr[1] = new int[2];
arr[1][1]=8;
第3种内存情况
int[][] arr2 = new int[][]{{1,2,3},{4,5}};
第4种内存情况(引用类型)
Dog[][] dogs = new Dog[2][];
dogs[1] = new Dog[3];
dogs[1][1] = new Dog();
dogs[0][1]= new Dog();//NullPointException
dogs[1][0].bark();//NullPointException
(3)遍历
int[][] arr = new int[][]{{2,6,3},{5,8}}; for(int i=0;i<arr.length;i++){ for(int j=0;j<arr[i].length;j++){ System.out.print(arr[i][j]+", "); } System.out.println(); }
三.数组拷贝
(1)System.arraycopy()
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从一个源数组复制指定length个数到目标数组的指定位置
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量
int[] src = {8,2,5,4,9,1,6}; int[] dest = new int[5]; System.out.println("拷贝前:"+Arrays.toString(dest)); System.arraycopy(src,2,dest,1,3); System.out.println("拷贝后:"+Arrays.toString(dest));
(2)自己封装API
public static void copyarray(int[] src,int srcPos,int[] dest,int destPos,int len){ for(int i=0;i<len;i++){ dest[destPos+i] = src[srcPos+i]; } }public static void copyarray2(int[] src,int srcPos,int[] dest,int destPos,int len){ for(int i=srcPos;i<srcPos+len;i++){ dest[destPos++] = src[i]; } }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
kubernetes 降本增效标准指南|理解弹性,应用弹性
弹性伸缩在云计算领域的简述 弹性伸缩又称自动伸缩,是云计算场景下一种常见的方法,弹性伸缩可以根据服务器上的负载、按一定的规则、进行弹性的扩缩容服务器。弹性伸缩在不同场景下的含义: 对于服务运行在自建机房的公司,弹性伸缩通常意味着允许一些服务器在低负载时进入睡眠状态,从而节省电费(以及用于冷却机器的水费和水费)。 对于使用在托管在云上的机房的公司而言,自动扩展可能意味着更低的费用,因为大多数云提供商都基于总使用量而不是最大容量进行收费。 即使对于不能在任何给定时间减少运行或支付的总计算能力的公司,它们也可以在低流量时降低服务器的负载。 弹性伸缩解决方案还可以用来替换异常状态的实例,从而在一定程度上防止硬件,网络和应用程序故障。 在生产工作负载经常变化且不可预测的情况下,弹性伸缩可以提供更长的正常运行时间和更高的可用性。 引用自:https://zh.wikipedia.org/wiki/%E5%BC%B9%E6%80%A7%E4%BC%B8%E7%BC%A9 弹性伸缩的三大关键要素 1. 基于什么特征和属性 弹性伸缩,顾名思义某种机制能够让某些对象进行弹性的扩容和缩容。在云计算和容器相关...
- 下一篇
Spring SpringMVC Mybatis整合
Spring SpringMVC Mybatis整合 spring 配置文件:beans.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schema...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS关闭SELinux安全模块
- Red5直播服务器,属于Java语言的直播服务器
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7设置SWAP分区,小内存服务器的救世主