网站首页 > java教程 正文
数组
数组:相同数据类型的数据的组合。
如: int score1 = 72;
int score2 = 90;
int score3 = 59;
使用数组:
1.数组的初始化
int[] scores1 = new int[]{72,90,59};//静态初始化:在声明并初始化数组与给数组相应的元素赋值操作同时进行。
int scores2[] = new int[3];//动态初始化:在声明并初始化数组与给数组相应的元素赋值操作分开进行。
scores2[0] = 72;
scores2[1] = 90;
scores2[2] = 59;
//声明数组的错误写法:
1)String[] names = new String[5]{"AA","BB","CC"};
2)int i[10];
3)int i = new int[];
注:不管是动态还是静态初始化数组,一定在创建的时候,就指明了数组的长度!
2.如何引用数组元素:通过数组的下角标的方式。下角标从0开始,到n-1结束。其中n为数组的长度。
3.数组的长度:通过数组的属性length来调用。
System.out.println(scores2.length);//3
4.如何遍历数组
for(int i = 0;i < scores1.length;i++){
System.out.println(scores1[i]);
}
5.关于数组元素的默认初始化值
1)byte short int long 而言:0
2)float double 而言:0.0
3)char而言:空格
4)boolean而言:false
5)引用类型变量而言:null
6.数组的内存结构
对于数组来讲:
二维数组
1.声明并初始化
//一维:
int[] i = new int[12];
i[0] = 12;
int[] j = new int[]{12,3};
//二维:
1)String[][] str = new String[4][3]; //4行3列
2)String[][] str1 = new String[4][];
str1[0] = new String[3];
...
str1[3] = new String[5];
3)
int[][] arr = new int[][]{{1,2,3},{4,5},{6}};
2.如何引用二维数组的元素:arr[1][0] = 12;
3.二维数组的长度:arr.length;//3
arr[1].length;//2
4.遍历二维数组
for(int i = 0;i < arr.length;i++){
for(int j = 0;j < arr[i].length;j++){
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
5.二维数组的结构:
数组的常见异常
1.数组下标越界的异常:java.lang.ArrayIndexOutOfBoundsException
int[] i = new int[10];
i[0] = 90;
i[10] = 99;
for(int m = 0;m <= i.length;m++){
System.out.println(i[m]);
}
2.空指针的异常:NullPointerException
第一种:
boolean[] b = new boolean[3];
b = null;
System.out.println(b[0]);
第二种:
String[] str = new String[4];
str[3] = new String("AA");//str[3] = "AA";
System.out.println(str[3].toString());
//第三种:
int[][] j = new int[3][];
j[2][0] = 12;
数组的常见的算法问题
1.求数组元素的最大值、最小值、和、平均数
2.数组的复制和反转
情况1:
情况2:(如何实现复制)
数组的反转:
// 数组元素的反转
// for(int i = 0;i < arr.length/2;i++){
// int temp = arr[i];
// arr[i] = arr[arr.length-1 - i];
// arr[arr.length - 1 - i] = temp;
// }
for (int x = 0, y = arr.length - 1; x < y; x++, y--) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
拓展:String str = "abcdefg";
数组的排序:
插入排序
直接插入排序、折半插入排序、Shell排序
交换排序
冒泡排序、快速排序(或分区交换排序)
选择排序
简单选择排序、堆排序
归并排序
基数排序
// 使用冒泡排序使数组元素从小到大排列
// for (int i = 0; i < arr.length - 1; i++) {
// for (int j = 0; j < arr.length - 1 - i; j++) {
// if (arr[j] > arr[j + 1]) {
// int temp = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = temp;
// }
// }
// }
// //使用直接选择排序使数组元素从小到大排列
// for(int i = 0; i < arr.length - 1; i++){
// int t = i;//默认i处是最小的
// for(int j = i;j < arr.length;j++){
// //一旦在i后发现存在比其小的元素,就记录那个元素的下角标
// if(arr[t] > arr[j]){
// t = j;
// }
// }
// if(t != i){
// int temp = arr[t];
// arr[t] = arr[i];
// arr[i] = temp;
// }
// }
还可以调用:Arrays工具类:Arrays.sort(arr);
猜你喜欢
- 2024-09-25 再说,数组(数组mem)
- 2024-09-25 数据结构基础-数组(数据结构数组思维导图)
- 2024-09-25 编程专题:JAVA语法基础(一维数组)
- 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数组,全新的认识数组,你真的学好数组了吗?
- 2024-09-25 Java中的数组(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)
本文暂时没有评论,来添加一个吧(●'◡'●)