在我讲数组的时候,大家一定对数组有一定的了解或者学过一点,今天我会从一维和二维两方面来谈谈我的理解,多维的有兴趣也可以自己推一下。
下面我列一张表来比较一下一二维数组的异同:
一维数组 | |
数组的属性和方法 | 唯一的属性length |
数组的长度 | 数组名.length |
对应下标的元素值 | 数组名[下标] |
数组的定义方式 | 数据类型 [] 数组名 = new 数据类型[长度]; 数据类型 [] 数组名 = {值,...}; 数据类型 [] 数组名; 数组名 = new 数据类型[长度]; 数据类型 [] 数组名; 数组名 = new 数据类型[]{值,...}; |
存储方式 | 连续的存储空间 |
数组的优点 | 按下标顺序访问,读取速度快 |
数组的缺点 | 内存空间在定义的时候就固定了,不能改变内存大小 |
索引开始位置 | a[0] |
二维数组 | |
数组的属性和方法 | 唯一的属性length |
数组的长度 | 行:数组名.length 列:数组名[行下标].length |
对应下标的元素值 | 数组名[行下标][列下标] |
数组的定义方式 | 数据类型 [][] 数组名 = new 数据类型[行][列]; 数据类型 [][] 数组名 = {{值,...},...}; 数据类型 [][] 数组名; 数组名 = new 数据类型[行][列]; 数据类型 [][] 数组名; 数组名 = new 数据类型[][]{{值,...},...}; |
存储方式 | 连续的存储空间 |
数组的优点 | 按下标顺序访问,读取速度快 |
数组的缺点 | 内存空间在定义的时候就固定了,不能改变内存大小 |
索引开始位置 | a[0][0] |
除此以外,Java中的数组分为两类,第一类,基本数据类型
第二类,引用类型(对象类型,类类型)
例如:
String [] array = new String[10];
Student stu = new Student();
此时,array不是String基本数据类型,而是引用类型。
下面我简单的附上我写的,一维数组的排序,我用的是插入排序:
import java.util.Random; //插入排序 /* * 外层的for循环要做n-1次,内层的for循环循环次数分析起来要更困难一些, * 因为该循环次数依赖于i-1个记录中关键码值小于第i个记录的关键码值 * 规律:每一个数都与当前数列中的上面的数比较当遇到大于当前数的时候就交换, * 最后最上面的数就是最小的 */ public class Arrayone1 { public static void main(String []args){ int []a = new int[6]; //定义一个数组 Random r = new Random(); //实例化一个随机数对象 for(int k=0;k<6;k++) //循环产生随机数 a[k] = r.nextInt(6); for(int i = 1;i<6;i++) for(int j = i;j>0&&(a[j]<a[j-1]);j--){ //比较大小 int temp = a[j]; //小的和打的交换 a[j]=a[j-1]; a[j-1]=temp; } for(int j=0;j<6;j++) System.out.print("a[j]="+a[j]+" ");//循环输出 } }
二维数组找最大值:我对选择排序进行了稍微的修改得到一个找最大值得方法
import java.util.Random; public class Arraytwo { public static int max=-1; public static void main(String []args){ int [][]at = new int[3][3]; //定义二,一维数组 int []ao = new int[9]; Random r = new Random(); //产生随机数 for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ at[i][j] = r.nextInt(9); ao[i*3+j]=at[i][j]; } } for(int j=0;j<9;j++) System.out.print("a0["+j+"]="+ao[j]+" ");//循环输出 System.out.println(); for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ System.out.print("at["+i+"]["+j+"]"+at[i][j]+" ");//循环输出 } } selsort(ao,9); //调用排序的函数 int zheng = max/3; //取整,即行 int yu = max%3; //取余,即列 System.out.print("max="+max+" "+"yu="+yu+" "+"zheng="+zheng+" "); System.out.println(); System.out.println("最大二维数组的行是"+zheng+"最大二维数组的列是"+yu); } /* * 修改的选择排序 * 选择排序:将数组的最后一个和前面的比较,如果数大,则将下标记用Maxindex录下来,由于交换 */ static void selsort(int[] a,int n){ int Maxindex = 1; for(int j=n-1;j>0;j--){ if(a[j]>a[Maxindex]){ Maxindex = j; } } max = Maxindex; } }
网上查过一些取二维数组最大值下表的方法,大部分是将二维转一维,在转回二维。
我的思路是:如果可以找到一维和二维的数组下表的关系就不用这么麻烦了,所以我用到了取余和取整。
相关推荐
- Java实现:通过调整数组使其满足堆的性质,然后通过交换堆顶元素和末尾元素来完成排序。 8. 计数排序(Counting Sort): - 基本思想:统计每个元素出现的次数,根据这些计数直接确定每个元素在排序后的位置。 ...
在编程领域,排序是至关重要的基础操作,尤其是在Java这样的面向对象语言中。本文将深入探讨Java实现的八大排序算法:直接插入排序、简单选择排序、希尔排序、堆排序、快速排序、冒泡排序、归并排序和基数排序。了解...
数组是一种数据结构,可以存储固定大小的相同类型的元素。方法是包含一系列语句的代码块,可以执行特定的任务。Java方法可以有参数,并且可以返回结果。 Java在互联网上的使用始于HotJava浏览器的开发,这是一个用...
1. **基础语法**:包括数据类型、变量、运算符、流程控制(if/else、switch、for、while)、数组、字符串和异常处理等。这些都是Java编程的基础,对于理解和编写任何Java程序至关重要。 2. **面向对象编程**:Java...
目录 前言 1、Arrays.copyOf() 2、System.arraycopy() 3、Arrays.copyOfRange() ...在 Java 中实现数组复制有 5 种方法: 【1】Arrays 类的 copyOf() 方法 【2】System 类的 arraycopy() 方法 【3】Arrays类的copyO
Java工程师必知必会 Java工程师必知必会是一个完整的Java课程体系,涵盖了Java语言基础、Oracle数据库的安装、配置、SQL、PL/SQL、JDBC入门等核心内容。该课程体系着重于企业真实案例驱动,通过专家讲师的带领,使...
Java程序员在日常开发中,掌握各种排序算法是提高效率、优化代码的关键。以下是对Java排序算法的详细解析,包括直接插入排序、希尔排序和简单选择排序。 1. 直接插入排序 直接插入排序是一种简单直观的排序算法,它...
Java数组浅析 Java中的数组是一种基本的数据结构,用于存储固定大小的同类型元素序列。 - **数组的特点**:数组中的每个元素都有一个索引,索引从0开始计数;数组一旦创建,其大小不可更改。 - **数组的初始化**...
2. 字符串替换(将“知通团队 JAVA”中的 JAVA 替换成 J2EE) 3. 字符串清除空格 4. 正则表达式提取身份证号中的生日 四、面向对象编程 1. 图书类的定义,包括书名、编号、书价和总册数等数据成员 2. 图书类的构造...
10.4.1 多态——运行方知结果 280 10.4.2 重载也不简单 280 10.4.3 使用多态构建车队 283 10.5 在多态的环境中拨开迷雾 284 10.5.1 神秘的Class类 284 10.5.2 覆盖不再神秘 285 10.5.3 instanceof运算符——让...
该课件包含了Java的基础知识点,包括开发环境配置、变量、流程控制、面向对象编程、数组和集合、文件操作、多线程等。 开发环境配置 Java开发环境配置是学习Java的第一步。Java虚拟机(JVM)是Java Virtual ...
1. Java基础知识点:包括数据类型、运算符、流程控制、数组、字符串处理等。Java的集合框架也是必须熟练掌握的,这包括List、Set、Map等接口及其实现类,以及它们的工作原理和适用场景。 2. 异常处理:理解和掌握...
Java 基础篇是学习 Java 的基础阶段,包括环境搭建、Java 基础语法、面向对象、数组、字符串、集合、框架、IO、反射、注解、网络编程和并发编程等知识点。 * 环境搭建:推荐使用 Intellij IDEA,GitHub 上有一份...
10.4.1 多态——运行方知结果 280 10.4.2 重载也不简单 280 10.4.3 使用多态构建车队 283 10.5 在多态的环境中拨开迷雾 284 10.5.1 神秘的Class类 284 10.5.2 覆盖不再神秘 285 10.5.3 instanceof运算符——让...
概述:本文档总结了Java语言的基础知识点,涵盖了变量、数据类型、运算符、控制流语句、数组、方法等方面的内容。这些知识点是Java开发人员需要掌握的基础知识,旨在帮助开发人员快速了解Java语言的特点和用法。 一...
而实验1和实验3、4则可能涵盖了数组、字符串操作以及基本算法的实现。 在每个实验报告中,孙铭可能详细记录了遇到的问题、解决策略以及对实验结果的反思,这些都是学习过程中不可或缺的部分。通过这样的实践,学生...
- **Java源文件扩展名**: Java源程序文件的扩展名必须是`.java`(D)。 - **编译结果**: Java编译器将源文件编译为字节码文件(C)。 ### 3. 执行Java程序的方法 - **正确的执行方式**: 在命令行窗口下执行Java程序,...
Java数组支持一维和多维数组。一维数组是最基础的数组形式,声明时不需要指定长度,但初始化后可以访问其元素。多维数组可以看作是数组的数组,例如二维数组可以看作是“数组的数组”。 掌握上述知识点是学习JavaSE...
Java数据结构与经典算法是每个高级开发者必备的知识。本文档将详细讲解这些概念,帮助读者深化理解。 首先,我们来谈谈大O表示法。大O表示法是衡量算法效率的一种方法,它描述了算法运行时间与输入数据规模之间的...