`
Swifly
  • 浏览: 14052 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

五、数组

阅读更多
1. 数组概述
    数组可以看成是多个相同类型数据组合,对这些数据的统一管理。
    数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
    数组中的元素可以是任何数据类型,包括基本类型和引用类型。
    一维数组的声明:type var[]; 或 type[] var;Java语言中声明数组时不能指定其长度(数组中元素的个数),例如:int a[5]; //非法
    Java中使用关键字 new  创建数组对象,格式为:数组名 = new 数组元素的类型 [数组元素的个数]
    注意:元素为引用数据类型的数组中的每一个元素都需要实例化。
     数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化,如:
public class Test {
    public static void main(String args[]) {
        int a[] = new int[5];
        Date[] days = new Date[3];
        System.out.println(a[3]);
        System.out.println(days[2]); 
    }
}
class Date {
    int year,month,day;
    Date(int y, int m, int d) {
        year = y; month = m; day = d;
    }
}

2. 数组元素的引用
    定义并用运算符new为之分配空间后后,才可以引用数组中的每个元素,数组元素的引用方式为:arrayName[index]   index为数组元素下标,可以是整型常量或整型表达式。如:a[3], b[i], c[6*i] 。数组元素下标从0开始;长度为n的数组的合法下标取值范围为0 ~ n-1 。每个数组都有一个属性length指明它的长度,例如:a.length的值为数组a的长度(元素个数)。
3. 二维数组
     二维数组可以看成以数组为元素的数组。例如:int a[][] = {{1,2},{3,4,5,6},{7,8,9}};
    Java中多维数组的声明和初始化应按从高维到低维的顺序进行,例如:
int a[][] = new int[3][];
a[0] = new int[2];
a[1] = new int[4];
a[2] = new int[3]
int t1[][] = new int[][4]; //非法

4. 二维数组初始化
 静态初始化:
      int intA[][] = {{1,2},{2,3},{3,4,5}};
      int intB[3][2] = {{1,2},{2,3},{4,5}};//非法
  动态初始化:
       int a[][] = new int[3][5];
      int b[][] = new int[3][] 
      b[0] = new int[2];
      b[1] = new int[3];
      b[2] = new int[5];

5. 数组的拷贝
    使用java.lang.System类的静态方法
   public static void arraycopy(Object src,int srcPos,Object dest, int destPos,int length)
    可以用于数组src从第srcPos项元素开始的length个元素拷贝到目标数组从destPos项开始的length个位置。
    如果源数据数目超过目标数组边界会抛出 ndexOutOfBoundsException 异常。
class Test {
  public static void main(String args[]) {
    String[] s = 
            {"Mircosoft","IBM","Sun","Oracle","Apple"};
    String[] sBak = new String[6];
    System.arraycopy(s,0,sBak,0,s.length);
    
    for(int i=0;i<sBak.length;i++){
      System.out.print(sBak[i]+" ");
    }
    
    System.out.println();
    int[][] intArray = {{1,2},{1,2,3},{3,4}};
    int[][] intArrayBak = new int[3][];
    System.arraycopy
            (intArray,0,intArrayBak,0,intArray.length);
    intArrayBak[2][1] = 100;
    
    for(int i = 0;i<intArray.length;i++){
        for(int j =0;j<intArray[i].length;j++){
            System.out.print(intArray[i][j]+"  "); 
        }
        System.out.println();
    }
  }
}

6. 排序
//选择排序
//java NumSort 3 5 7 1 2 8 9 4 6
//读程序的方法:1,画图2,打印测试信息
class Test {
	public static void main(String[] args) {
		int[] a = new int[args.length];
		for (int i=0; i<args.length; i++) {
			a[i] = Integer.parseInt(args[i]);
		}
		print(a);
		selectionSort(a);
		print(a);
	}
	//每一次外层循环,最多交换一次
	public static void selectionSort(int[] a) {
		int temp;
		for (int i = 0; i < a.length; i++) {
			//System.out.println(i);
			for (int j = i + 1; j < a.length; j++) {
				//System.out.println("  "+j);
				if (a[i] > a[j]) {
					temp = a[i];
					a[i] = a[j];
					a[j] = temp;
				//System.out.print("    " + i +" <-->"+j +"  ");
				//print(a);

				}
			}
		}
		//for (int i = 0; i < a.length; i++) {
		//	System.out.print(a[i] + " ");
		//}
	}
	//每一次外层循环,可能交换多次
	public static void selectionSort1(int[] a) {
		int k, temp;
		for (int i = 0; i < a.length; i++) {
			k = i;
			for (int j = k + 1; j < a.length; j++) {
				if(a[j] < a[k]) {
					k = j;
				}
			}
			
			if(k != i) {
				temp = a[i];
				a[i] = a[k];
				a[k] = temp;
			}
		}
	}
	
	private static void print(int[] a) {
		for(int i=0; i<a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println();
	}
	
	
}





分享到:
评论

相关推荐

    C语言实验程序、总结 实验五 数组.pdf

    【C语言实验程序、总结 实验五 数组】 在C语言中,数组是一种非常重要的数据结构,用于存储一组相同类型的数据。本实验主要涵盖了以下几个知识点: 1. **一维数组和二维数组**: - 一维数组可以看作是线性的数据...

    实验五数组

    实验五数组 实验五数组是计算机编程中的一种基本数据结构,数组是一种集合类型的数据结构,用于存储同类型的多个元素。数组可以是一维数组、二维数组或多维数组,数组的定义、赋值、输入输出方法等都是数组的基础...

    第五 数组PPT学习教案.pptx

    数组是编程语言中的一种基础数据结构,用于存储同类型的多个数据项。在Java中,数组是一种特殊的数据结构,它的特点是所有元素都具有相同的类型,并且在内存中是连续存储的。数组可以是一维的,也可以是多维的,这里...

    C语言实验五 数组(1).zip

    2075-字符串排序(数组).txt 查找最大的字符(字符数组)xt 回文串(字符数组)xt 计算多项式的值(数组)xt 计算二维数组右上角元素的和(数组).xt 十进制转换为十六进制(数组),t 数组的最大值及下标(数组)....

    C语言作业五 数组(1).zip

    鞍点 ...插入数组元素(数组) .txt 第几天?txt 输出出现过的大写英文字母(数组).xt 数的转移(数组).txt 数组的平均数和标准差 (数组)txt 数组元素的删除(数组).txt 字符串联合(数组).txt

    数据结构 第五数组PPT学习教案.pptx

    数组是计算机科学中基本且重要的数据结构之一,它在存储和处理大量有序数据时发挥着关键作用。在数据结构的学习中,数组是最基础的概念,它提供了以固定索引访问元素的能力,这种索引通常是整数。数组的存贮方式简单...

    数据结构第五章数组与广义表

    本人上课时老师的课件,讲的还不错,所以建议大家看看

    程序设计第五单元数组总结

    第五单元包括十个单元,分别是一维数组的定义、一维数组的输入与输出、一维数组的插入删除、一维数组的查找统计、一维数组的元素排序、一维数组的应用举例、二维数组的定义与操作、二维数组的应用举例、数字方阵、...

    JavaScript jQuery 中定义数组与操作及jquery数组操作

    JavaScript 和 jQuery 中的数组操作是编程中非常基础且重要的部分,尤其在处理数据集合时。在 JavaScript 中,数组是一种特殊的数据结构,可以存储各种类型的数据,包括整型、字符串、对象等。虽然 JavaScript 不...

    数据结构练习(含答案):第五章数组和广义表.doc

    数据结构练习(含答案):第五章数组和广义表 本资源摘要信息涵盖了数据结构中数组和广义表的相关知识点,包括数组的基本操作、数组的存储方式、稀疏矩阵的压缩存储方法、对称矩阵的存储方式等。 一、选择题 1. ...

    数组指针和指针数组的区别

    五、地址的强制转换 在下面的例子中,我们定义了一个结构体 Test: ```c struct Test{ int Num; char *pcName; short sDate; char cha[2]; short sBa[4]; }*p; ``` 假设 p 的值为 0x100000。那么,下面的...

    数组中五个数的最大值

    C#数组中五个数的最大值.cs

    c#中结构数组的定义

    #### 五、数组的初始化 C#提供了简洁的语法用于初始化数组,只需在大括号({})内列出初始值即可。如果在声明时未初始化,数组成员会自动设置为其类型的默认值。例如: ```csharp int[] numbers = new int[5] {1, ...

    易语言数组文本替换

    五、应用场景 1. 数据清洗:在数据分析或处理大量文本数据时,可能需要统一替换某些特定的文本,如空格、特殊字符等。 2. 文本过滤:在聊天室或论坛系统中,可以使用数组文本替换来过滤敏感词,保护社区环境。 3....

    交错数组和多维数组分析

    #### 五、交错数组的应用场景 交错数组非常适合于处理那些数据结构不规则或者数据量动态变化的情况,比如表格数据、统计报表等。例如,在处理Excel表格数据时,由于某些单元格可能为空,导致每行的数据长度不同,...

    多维数组下标计算 多维数组下标计算 多维数组下标计算

    五、数组元素的地址计算公式 数组元素的地址计算公式是指通过公式计算数组元素的存储地址的过程。地址计算公式可以用来计算二维数组、三维数组等多维数组的元素地址。地址计算公式可以分为行优先顺序和列优先顺序两...

    数据结构课程中的第五章 数组和广义表PPT

    南航数据结构课程中的第五章 数组和广义表PPT。

    matlab 三维 数组matlab 三维 数组

    五、应用示例 在信号处理中,三维数组常用来存储多通道信号,其中第一个维度代表时间,第二个维度表示不同的信号通道,第三个维度可能表示不同样本。在图像处理中,一个典型的三维数组是RGB图像,其尺寸为高度×...

    大一c语言数组实验心得.docx

    五、内存管理 内存管理是 C 语言中的一种重要机制,用于管理程序的内存空间。内存分为三个部分:静态区、堆、栈。静态区用于存储全局变量和静态变量,堆用于存储动态分配的内存,栈用于存储函数调用时的临时变量。 ...

Global site tag (gtag.js) - Google Analytics