Java数组-2022年4月17日
数组
数组Array
ArrayList概念:一个连续的空间,存储多个相同数据类型的值
特点:
1. 类型相同
2. 长度固定
数组的创建
数组类型[] 数组名 = new 数组类型[数组长度];
//长度大小决定了你数组存储的大小
数组的声明和赋值:
| 数组的声明方式 | 具体声明赋值方法 |
| 先声明、分配空间 | 数据类型[] 数组名; 数组名 = new 数组类型[长度]; |
| 声明并分配空间 | 数据类型[] 数组名 = new 数据类型[长度]; |
| 声明并赋值{复杂版本} | 数据类型[] 数组名 = new 数据类型[]{value1,value2,....} |
| 声明并赋值(简单版本) | 数据类型 数组名[] = {value1,value2,.....} |
注意:数组的下标是从0开始计数的
数组的常见异常
数组的使用: 创建数组,依次赋值,依次取值
有效下标范围: 0~(数组长度-1)
常见的数组异常就是数组下标越界:
报错: java.lang.ArrayIndexOutOfBoundsException: n ====>>此处的N表示的是你所访问的超出数组下标的无效下标
数组的遍历
- 就是从头到尾对数组每一个元素的访问
可以通过下标依次进行访问,也可以通过循环来获取每个下标对应的数组中的值
//通过下标依次获取(for循环)
public void Test(){
int i[] = {1,2,3,5,6,7,8};
for (int i = 0; i<i.length;i++){
System.out.println(i[i]);
}
}
数组的扩容
扩容的思路:
1. 创建大于原数组长度的新数组;
2. 将数组中的元素依次赋值给新的数组中
赋值的方式:
循环遍历依次赋值(for);
System.arraycopy(原数组,原始数组起始,新数组,新数组长度,长度);
java.util.Array.copyOf(原数组,新长度); //返回带有原值的新数组
数组类型的返回值
创建新数组,长度为原数组的两倍,新数组中保持原有数据,返回新数组
public static void main(String args[]){
int[] oa = {111,222,333,444,555,666};//0x0000A111
int[] na = expand(oa);
for (int i = 0;i<na.length;i++){
System.out.println(na[i]);
}
}//主函数
public static int[] expand(int[] oldArray){
int[] newArray = new int[oldArray.length*2];
for (int i = 0;i < oldArray.length;i++){
newArray[i] = oldArray[i];
}
return newArray;
}//数组扩容
可变长数组
public static void printArray(int... Array){
for (int i=0;i<Array.length;i++){
System.out.println(Array[i]);
}
}//可变长数组
排序算法
public static void bubbleSort(int[] array){
//相邻的两个数值比较大小,互换位置
System.out.println("bubbleSortTest=========");
System.out.println(Arrays.toString(array));
for (int i=0;i<array.length-1;i++){
for (int j=0;j<array.length-1-i;j++){
int temp = 0;
if (array[j]>array[j+1]) {
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(array));
forArray(array);
}//冒泡排序
public static void selectionSort(int[] array){
//固定值与其他值依次比较大小,互换位置
System.out.println("selectionSortTest========");
System.out.println("原始数据值:"+Arrays.toString(array));//转换成字符串输出
for (int j = 0;j<array.length;j++){//需要经过N次对比
int min_index = j;//假定这是最小值的下标
for (int i=j+1;i<array.length;i++){//每轮需要对比的个数
if (array[i]<array[min_index]){//比较前面确定的最小值和后面值的大小,如果后买的值值比面的值小就将下标进行替换
min_index=i;//把最小的下标转换过去
}
}
if (j != min_index){//比较两个下标是否一样,一样的话就直接跳过
int tmp = array[j];//将原始值赋值给tmp
array[j] = array[min_index];//将最小值赋值给array[i]
array[min_index] = tmp;//将最小值替换给tmp
}
}
System.out.println("原始数据值:"+Arrays.toString(array));
forArray(array);
}//选择排序
public static void jdkSort(int[] array){
//调用Java函数进行排序(java.util.Array.sort(数组名);===>默认升序)
Arrays.sort(array);
forArray(array);
}//JDK排序
二维数组
概念:二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。
public static void PrintAr2(){
int[][] array;
array = new int[][]{{1,2,3,4},{4,3,2,1}};
// System.out.println(Arrays.toString(array[0]));//输出数组的内容
// System.out.println(array[1][1]);//访问通过数组的下标进行访问{}==》代表的就是一个维度,合数组访问类似
//遍历二位数组
for (int i=0;i<array.length;i++){for (int j=0;j<array[i].length;j++){
System.out.println(array[i][j]);
}}
}//二维数组创建和遍历
测试代码
public class demo_3 {
public static void main(String args[]){
int[] oa = {222,111,333,555,444,666};//0x0000A111
int[] na = expand(oa);
// for (int i = 0;i<na.length;i++){
// System.out.println(na[i]);
// }
// printArray(oa);
// bubbleSort(oa);
//
selectionSort(oa);
PrintAr2();
}//主函数
public static int[] expand(int[] oldArray){
int[] newArray = new int[oldArray.length*2];
for (int i = 0;i < oldArray.length;i++){
newArray[i] = oldArray[i];
}
return newArray;
}//数组扩容
public static void printArray(int... Array){
for (int i=0;i<Array.length;i++){
System.out.println(Array[i]);
}
}//可变长数组
public static void forArray(int[] array){
for (int i = 0; i < array.length; i++) {
System.out.println("Count is:" + array[i]);
}
}//遍历数组
public static void bubbleSort(int[] array){
//相邻的两个数值比较大小,互换位置
System.out.println("bubbleSortTest=========");
System.out.println(Arrays.toString(array));
for (int i=0;i<array.length-1;i++){
for (int j=0;j<array.length-1-i;j++){
int temp = 0;
if (array[j]>array[j+1]) {
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(array));
forArray(array);
}//冒泡排序
public static void selectionSort(int[] array){
//固定值与其他值依次比较大小,互换位置
System.out.println("selectionSortTest========");
System.out.println("原始数据值:"+Arrays.toString(array));//转换成字符串输出
for (int j = 0;j<array.length;j++){//需要经过N次对比
int min_index = j;//假定这是最小值的下标
// System.out.println(min_index);
for (int i=j+1;i<array.length;i++){//每轮需要对比的个数
if (array[i]<array[min_index]){//比较前面确定的最小值和后面值的大小,如果后买的值值比面的值小就将下标进行替换
min_index=i;//把最小的下标转换过去
}
}
if (j != min_index){//比较两个下标是否一样,一样的话就直接跳过
int tmp = array[j];//将原始值赋值给tmp
array[j] = array[min_index];//将最小值赋值给array[i]
array[min_index] = tmp;//将最小值替换给tmp
}
}
System.out.println("原始数据值:"+Arrays.toString(array));
forArray(array);
}//选择排序
public static void jdkSort(int[] array){
//调用Java函数进行排序(java.util.Array.sort(数组名);===>默认升序)
Arrays.sort(array);
forArray(array);
}//JDK排序
public static void PrintAr2(){
int[][] array;
array = new int[][]{{1,2,3,4},{4,3,2,1}};
// System.out.println(Arrays.toString(array[0]));//输出数组的内容
// System.out.println(array[1][1]);//访问通过数组的下标进行访问{}==》代表的就是一个维度,合数组访问类似
/** 遍历二位数组*/
for (int i=0;i<array.length;i++){for (int j=0;j<array[i].length;j++){
System.out.println(array[i][j]);
}}
}//二维数组创建和遍历
}
Java数组-2022年4月17日的更多相关文章
- java课堂实践(5月17日)20155317 王新玮
对P145 MathTool.java 代码托管 在IDEA中,使用JUnit进行单元测试,测试用例不少于三个,要包含正常情况,边界情况.提交测试代码和运行结果截图,加上学号水印,提交码云代码链接. ...
- Java分布式互联网架构/微服务/高性能/springboot/springcloud 2018年10月17日直播内容
2018年10月17日直播内容 大规模并发必备的消息中间件技术ActiveMq 网盘链接: https://pan.baidu.com/s/1GlxsZ2JnrvX- YN16-S7lQw 提取码: ...
- 2016年12月17日 星期六 --出埃及记 Exodus 21:12
2016年12月17日 星期六 --出埃及记 Exodus 21:12 "Anyone who strikes a man and kills him shall surely be put ...
- 2015年8月17日,杨学明老师《产业互联网化下的研发模式转型》在中国科学院下属机构CNNIC成功举办!
2015年8月17日,杨学明老师为中国网络新闻办公室直属央企中国互联网络中心(CNNIC)提供了一天的<产业互联网化下的研发模式转型>内训课程.杨学明老师分别从产业互联网化的问题与挑战.传 ...
- 8月17日 Power-BI关于全国房地产开发投资情况分析 QQ群视频交流开课啦
<ignore_js_op> 数读|中国的经济只剩下房地产了么? 引言: 近日一则标题为“房奴们又立功啦,7月份新增贷款几乎都来自房贷!”的报道吸引了大众的目光.该报道指出在央行8月13日 ...
- 2016年11月17日 星期四 --出埃及记 Exodus 20:8
2016年11月17日 星期四 --出埃及记 Exodus 20:8 "Remember the Sabbath day by keeping it holy.当记念安息日,守为圣日.
- 2016年10月17日 星期一 --出埃及记 Exodus 19:1
2016年10月17日 星期一 --出埃及记 Exodus 19:1 In the third month after the Israelites left Egypt--on the very d ...
- 西安Uber优步司机奖励政策(1月11日~1月17日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Java Calendar获取年、月、日、时间
Java Calendar获取年.月.日.时间 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00" ...
随机推荐
- 半吊子菜鸟学Web开发6 -- Vscode开发环境配置
1vscode上手一周不到,终于弄出点门路,终于弄清楚了点vscode的设置是什么样子的了....哭 2就我这两天的使用来看,一般vscode默认只让打开一个文件夹,然后在你打开的文件夹里面自动生成 ...
- Java锁之乐观锁、悲观锁、自旋锁
java锁分为三大类乐观锁.悲观锁.自旋锁 乐观锁:乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别 ...
- Oracle入门基础(四)一一多行函数
SQL> --工资总额 SQL> select sum(sal) from emp; SUM(SAL) 29025 SQL> --人数 SQL> select count(*) ...
- Linux的权限总结
一般权限和特殊权限可控制 文件所有者.所有组.其他人的读写执行权限, 而隐藏权限则可以进行补充权限,可限制 文件内容只能追加内容,不更新属性等信息 ACL则可以进行让某个用户或组或other拥有指定文 ...
- ACL 权限控制机制 ?
UGO(User/Group/Others) 目前在 Linux/Unix 文件系统中使用,也是使用最广泛的权限控制方式.是一种粗 粒度的文件系统权限控制模式. ACL(Access Control ...
- jvm性能调优工具
1.jstat 命令 jstat: 查看类装载,内存,垃圾收集,gc相关信息 命令参数 # jstat -option -t #option:参数选项,-t:显示系统的时间 # jstat -opti ...
- centos 7环境下安装rabbitmq
以 前在windows 7下面成功安装过rabbitmq,但是在windows 10下面安装失败,各种问题,各种解决方法都试过,还是不成功,最终放弃治疗. 后来经人指点,在linux下安装rabbit ...
- Rust 中的数据布局--可选的数据布局
Rust 允许你指定不同于默认的数据布局策略,并为你提供了不安全代码指南. repr(C) 这是最重要的"repr".它的意图相当简单:做 C 所做的事.字段的顺序.大小和对齐方式 ...
- PCB中加入任意LOGO图文说明 精心制作
防静电图 首先我们要对下载下来的图片进行处理否则Altium designer6.9会提示装载的图片不是单色的,用Photoshop CS打开开始下载的图片 选择 图像→模式→灰度 在选择 图像→模式 ...
- PCB基础知识(一)
在电子行业有一个关键的部件叫做PCB(printed circuit board,印刷电路板).这是一个太基础的部件,导致很多人都很难解释到底什么是PCB.这篇文章将会详细解释PCB的构成,以及在PC ...