网站首页 > java教程 正文
数组
数组:相同数据类型的组合 (数组内所有数据的类型都是相同的)
一.数组的声明和初始化
声明:int[ ] a; [ ](数组)
初始化:1.静态的初始化:静态的初始化只能在声明时使用 int [] a={1,2,3};
2.动态的初始化: 第1种:直接定义一个长度a =new int[3];
第2种:直接赋值 a=new int[]{1,2,3};
注:只要有关键字new就是动态
二.数组成员的访问
1.数组的每个元素都有自己的下标,下标从0开始,数组可以通过.length来获取数组的长度
数组下标的范围(0~length-1) (底层就是有char类型数组实现的)
例如: int[ ] a={1,2,3};
System.out.println(a.length);
结果: 3
2.通过数组名[index(下标)]来访问数组的元素
例如: int[ ] a={1,2,3};
//对应下标0,1,2
System.out.println(a[0]);
结果: 1
a[1]=10; (将数组a中下标为1的数据赋值成10)
3.数组成员自动初始化为'0'值的现象 (int型 0/double型 0.0/boolean型false/
String型(引用类型)null/char型'口'\u0000)
例如: int[ ] a=new int[5];
System.out.println(Arrays.toString(a));
结果: [0,0,0,0,0,]
4.如果越界,会出现ArrayIndexOutOfBoundsException 数组下标越界异常
三.数组内容的输出
Arrays.toString (数组名): 把数组X用文本描述的形式显示出来
例如: int[ ] a={1,2,3};
System.out.println(Arrays.toString(b));
结果:[1,2,3]
四.数组的复制:1.直接赋值(缺陷:将两个数组关联,改变其中一个的同时,另一个也会改变)
例如: int [ ] a ={1,2,3};
int [ ] b =a;
system.out.println(Arrays.toString(a))
system.out.println(Arrays.toString(b))
b[1]=10;
system.out.println(Arrays.toString(a))
system.out.println(Arrays.toString(b))
结果: [1, 2, 3]
[1, 2, 3]
[1, 10, 3]
[1, 10, 3] //改变b的同时a也被改变了
2.使用for循环逐一赋值
例如: int [ ] a ={1,2,3,4,5};
Int [ ] b =new int[a.length]; //使数组b的长度与a保持一致
For(int I=0;i<a.length-1;i++){
b[i]=a[i];
}
System.out.println(Arrays.toString(b));
b[1]=10;
System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(a));
结果: [1, 2, 3, 4]
[1, 10, 3, 4]
[1, 2, 3, 4]
3.使用系统类里面的方法实现数组的复制
system.arraycopy (src, srcPos, dest, destPos, length)
src,需要复制的数组 srcPos复制开始的下标位置
dest:目标数组(复制给谁) destPos:目标数组开始接受的位置
length:复制多少长度
例如: int [ ] a ={1,2,3,4,5};
Int [ ] b =new int[a.length];
System.arraycopy(a.0.b.0.a.length);
注:该方法需先定义数组长度与被复制数组一致
Arrays.copyOf(original, newLength)
Original:需要复制的数组 newLength:新数组的长度
例如: int [ ] a={1,2,3};
Int [ ] b= Arrays.copyOf(a,a.length)
制作arraycopy方法:
public static int[ ] arraycopy(int [ ]src,int srcPos,int [ ] dest,int destPos,int length){
for(int i=srcPos;i<=srcPos+length;i++){
dest[destPos++]=src[i];
}
return dest;
}
猜你喜欢
- 2024-09-25 再说,数组(数组mem)
- 2024-09-25 数据结构基础-数组(数据结构数组思维导图)
- 2024-09-25 编程专题:JAVA语法基础(一维数组)
- 2024-09-25 2.基本语法(数组)(数组的基本用法)
- 2024-09-25 灵魂拷问:如何检查 Java 数组中是否包含某个值?
- 2024-09-25 JAVA中数组(一)(java数组菜鸟教程)
- 2024-09-25 java数据类型之数组,有关数组的18个问题
- 2024-09-25 java基础回顾(五)——java数组(java里面数组)
- 2024-09-25 JavaSE基础:数组(java数组用法)
- 2024-09-25 java数组,全新的认识数组,你真的学好数组了吗?
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)