数组

数组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日的更多相关文章

  1. java课堂实践(5月17日)20155317 王新玮

    对P145 MathTool.java 代码托管 在IDEA中,使用JUnit进行单元测试,测试用例不少于三个,要包含正常情况,边界情况.提交测试代码和运行结果截图,加上学号水印,提交码云代码链接. ...

  2. Java分布式互联网架构/微服务/高性能/springboot/springcloud 2018年10月17日直播内容

    2018年10月17日直播内容 大规模并发必备的消息中间件技术ActiveMq 网盘链接: https://pan.baidu.com/s/1GlxsZ2JnrvX- YN16-S7lQw 提取码: ...

  3. 2016年12月17日 星期六 --出埃及记 Exodus 21:12

    2016年12月17日 星期六 --出埃及记 Exodus 21:12 "Anyone who strikes a man and kills him shall surely be put ...

  4. 2015年8月17日,杨学明老师《产业互联网化下的研发模式转型》在中国科学院下属机构CNNIC成功举办!

    2015年8月17日,杨学明老师为中国网络新闻办公室直属央企中国互联网络中心(CNNIC)提供了一天的<产业互联网化下的研发模式转型>内训课程.杨学明老师分别从产业互联网化的问题与挑战.传 ...

  5. 8月17日 Power-BI关于全国房地产开发投资情况分析 QQ群视频交流开课啦

    <ignore_js_op> 数读|中国的经济只剩下房地产了么? 引言: 近日一则标题为“房奴们又立功啦,7月份新增贷款几乎都来自房贷!”的报道吸引了大众的目光.该报道指出在央行8月13日 ...

  6. 2016年11月17日 星期四 --出埃及记 Exodus 20:8

    2016年11月17日 星期四 --出埃及记 Exodus 20:8 "Remember the Sabbath day by keeping it holy.当记念安息日,守为圣日.

  7. 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 ...

  8. 西安Uber优步司机奖励政策(1月11日~1月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. Java Calendar获取年、月、日、时间

    Java Calendar获取年.月.日.时间 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00" ...

随机推荐

  1. java项目中日志的配置

    1.日志相关比较详细的介绍:https://www.cnblogs.com/tanshaoxiaoji/p/log4j_config.html 2.总结1中博客说的内容 目前市场上常用的日志有log4 ...

  2. 从文件下载视角来理解Web API

    一.问题源起 从Web From过来的人应该会比较熟悉以下下载文件的代码: [HttpPost] [Route("Download")] public void Download( ...

  3. uniapp小程序图片前端压缩上传

    目录 1,前言 2,实现代码 1,前言 这次项目中做了一个图片上传,要求是大于2MB的就压缩成2MB一下的再上传,我这边利用了uniapp的文件接口,使用canvas做了一个压缩上传的功能,目前已上线 ...

  4. 半吊子菜鸟学Web开发1 --配置开发环境

    先说说我自己的情况,我算是一个半吊子菜鸟,对web开发熟练度为0,但是对熟悉C++和Python 所以这里开始记录我学习Web开发的历程,看看我这里学习的程序,能够学到什么地方. 首先是配置环境,我的 ...

  5. 分布式锁redis

    1. 首先看这篇文章中  https://mp.weixin.qq.com/s/s-ozSjM5WmSUopxttSWYeQ 为什么redis能实现锁功能呢,看下图,redis命令窗口中,setnx  ...

  6. Kerberos基本原理、安装部署及用法

    1. 概述 Kerberos是一种认证机制. 目的是,通过密钥系统为客户端/服务器应用程序提供强大的认证系统:保护服务器防止错误的用户使用,同时保护它的用户使用正确的服务器,即支持双向验证:Kerbe ...

  7. DateUtils互转工具类

    public class DateUtils { /** * 取系统默认时区ID */ private static final ZoneId ZONE_ID; static { ZONE_ID = ...

  8. IOC的优点是什么?

    IOC 或 依赖注入把应用的代码量降到最低.它使应用容易测试,单元测试不再需要单例和JNDI查找机制.最小的代价和最小的侵入性使松散耦合得以实现.IOC容器支持加载服务时的饿汉式初始化和懒加载.

  9. 学习Walle(一)

    一.概述 Walle 一个web部署系统工具,配置简单.功能完善.界面流畅.开箱即用!支持git.svn版本管理,支持各种web代码发布,PHP,Python,JAVA等代码的发布.回滚,可以通过we ...

  10. spring @Bean和@Order 官方doc理解

    今天阅读了spring的官方代码,(大概)理解了@Bean和@Order如何使用. @Bean 官方代码解读: 0.@Bean的注入,用于表示这个bean被spring容器管理(创建.销毁)(官方英文 ...