`

便捷的存储容器--数组

    博客分类:
  • Java
 
阅读更多

2016.08.03

 

上课内容:数组

 

       首先,什么是数组?

数组是具有相同数据类型的一组数据的组合。列如:球类的集合——足球,羽毛球,网球。电器的集合——电视,电脑,洗衣机。数组中的每个数据具有相同的数据类型。

 

       然后,数组是基本数据类型还是引用数据类型?

基本数据类型有byte int short char long boolean float double 八种基本数据类型

故数组是引用类型

数组有什么方法和属性?

属性:长度,方法:全部继承Object

 

       另外,数组是具有连续的线性数据结构,数组的长度一旦定义就无法更改,列如要是我们开辟了一个长度为10的数组array,当我们引用array[10]时,就会报错说数组溢出,即出现ArrayIndexOutOfBoundsException(数据越界)

 

       数组的应用很广泛,一般来说数组使用来存储数据,也可以利用数组来来对数据进行排序。 数组可以存储的数据类型有很多比如说图片、旦整数、字符串等,虽然可以存很多的数据类型,但是 每一个数组都只能存同一个数据类型的数据。这就像是商店里买的饼干一样,饼干盒里装的只能是 饼干,不可能给你装个苹果或桔子,这是生产商定以好的,不能更改的。数组也是这样的一你定 义好了数据类型就不能在传别的数据类型的数据进去,否则会报错。

 

        数组的定义

        一维数组:数据类型 [] 数组名 = new 数据类型[长度];  这种方式定义的数组,只有数据类型的默认值

       int [] array = new int [10];

 

       数据类型 [] 数组名 = {数据,...};

       int [] array = {1,2,3,4,,5};

 

       数据类型 [] 数组名 = new 数据类型[]{数据,...};

       int [] array = new int []{1,2,3,4,,5};

 

       数据类型 [] 数组名;

       int [] array;

 

       数组名 = new 数据类型[]{数据,...};

       array[] = new int[]{1,2,3,4,,5};

       数组名 = new 数据类型[长度];

 

       二维数组:

数据类型 [][] 数组名 = new 数据类型[行][列];  这种方式定义的数组,只有数据类型的默认值

               int [][]array = new int [][];

数据类型 [][] 数组名 = {{数据,...},...};

int [][] array = {{1,2,3,},{2,3,4}};

数据类型 [][] 数组名 = new 数据类型[][]{{数据,...},...};

int [][] array = new array[][]{{1,2,3,},{2,3,4}};

数据类型 [][] 数组名;

int array [][] array;

数组名 = new 数据类型[][]{{数据,...},...};

                array[][] = new int[][]{{1,2,3,},{2,3,4}};

数组名 = new 数据类型[行][列];

       数组的使用,要想知道数组中能存储多少个元素,数组名.length  length是数组唯一的一个属性,用来获取数组能存储多少元素的属性。

       如果想给数组的某一个位置的赋值,则使用 数组名[下标] = 值;

       如果要想获取某个位置的值,则使用 数据类型  变量名 = 数组名[下标];

       二维数组的使用:

       想知道二维数组中能存储多少个元素:

       使用行数和列数的方式定义的数组:数组名.length ,数组名[行下标].length  

       使用值定义的数组: 数组名[行下标].length+......获取二维数组中的总行数:数组名.length

       获取二维数组中某一行的总列数:数组名[行下标].length

       想给数组某一个位置赋值:数组名[行下标][列下标] = 值;

       获取某一个位置的值:数据类型  变量名 = 数组名[行下标][列下标]; 

练习

1.对一位数组排序

//冒泡法
public class MaoPaoSort{
	public static void main(String[] args){
		int array[] = {87,23,9,10,23,45,109};//定义一组数组
		maopaoSort(array);
	}

	private static void maopaoSort(int[] array) {
		int temp = 0;//定义已给临时变量
		for(int i=0;i<array.length;i++){
			for(int j=0;j<array.length-i-1;j++){
				if(array[j]<array[j+1]){
					temp = array[j];
					array[j] = array[j+1];
					array[j+1] = temp;
				}
			}
		}
		maopaoPrint(array);
	}

	private static void maopaoPrint(int[] before) {
	     for(int k=0;k<before.length;k++){
	    	 System.out.print(before[k]+" ");
	     }
	}
}

 

//插入排序法
public class InsertSort {

	public static void main(String[] args) {
     
		int[] arr = {4,6,13,67,2,89,24,16};//定义数组
		doInsertSort(arr);
	}

	private static void doInsertSort(int[] scr) {
		int len = scr.length;//获取数组的长度
		for(int i=1;i<len;i++){//遍历数组,从1开始
			int j;             //定义变量j
			int temp = scr[i];//临时存储当前的数字
			for(j=i;j>0;j--){//遍历1之前的数字
				if(scr[j-1]>temp){
					scr[j]=scr[j-1];
				}else
					break;
			}
			scr[j] = temp;//把空缺位置赋值为原有的值
		}
		print(scr);
	}

	private static void print(int[] before) {
		for(int i=0;i<before.length;i++){//遍历
			System.out.print(before[i]+" ");//打印,以空格隔开
		}
		System.out.println();//换行
	}
}

 

//直接选择排序
public class SelectSort {
     public static void main(String[] args){
    	int array[] = {89,23,45,18,60,108}; 
    	//创建数组排序类的对象
    	SelectSort ss = new SelectSort();
    	ss.sort(array);
     }
    /*
     * 直接选择排序法
     */
	private void sort(int[] array) {
		int index;
		for(int i=1;i<array.length;i++){
			index = 0;
			for(int j=1;j<=array.length-i;j++){
				if(array[j]>array[index]){
					index = j;
				}
			}
			//交换在位置array.length-i和index(最大值)上的两个值
			int temp = array[array.length-i]; //把第一个元素值保存到临时变量中
			array[array.length-i] = array[index];//把第二个元素值保存到第一个元素单元中
			array[index] = temp;//把临时变量也就是第一个元素原值保存到第二个元素中
		}
		PrintArray(array);
	}
	/*
	 * 显示数组中的所有元素
	 */
	private void PrintArray(int[] array) {
		for(int i:array){
			System.out.print(" " +i);
		}
	}
}

 

2.找出二维数组中最大的值,所有最大值所在的行和列        

 
import java.util.Random;

//二维数组:随机赋值,找出最大值,输出值,行,列
public class Sort {
      public static void main(String[] args){
    	  int[][] array = new int[3][4]; 
    	  Random r = new Random();
    	  int max = 0;
          //循环遍历最大值
    	  for(int i=0;i<array.length;i++){
    		  for(int j=0;j<array[i].length;j++){
    			  array[i][j] = r.nextInt(10);
    			  if(array[i][j]>max){
    				  max = array[i][j];
    			  }
    			  
    		  }
    	  }
    	  System.out.println("最大值为:"+max);
      //循环遍历最大值的行和列
      for(int i=0;i<array.length;i++){
		  for(int j=0;j<array[i].length;j++){
                  if(array[i][j]==max){
		  System.out.println(" 第"+i+"行,第"+j+"列");
             }
	      }
     }
  }
}
 
 
分享到:
评论

相关推荐

    编程技术C++数组指针与字符串

    - 数组在内存中是连续存储的。 - **数组声明与使用**: - 数组声明的基本格式为:`类型标识符 数组名[数组大小];` - 示例:`int arr[10];` 这条语句声明了一个名为`arr`的整型数组,它包含10个元素。 - 使用...

    LABVIEW程序实例-一维数组操作函数.zip

    首先,LabVIEW中的数组是一种可以包含多个相同类型元素的容器,这些元素在内存中是连续存储的。一维数组是最简单的数组形式,它相当于数学上的序列或者列表。在LabVIEW中操作一维数组,可以利用“数组”函数库中的各...

    MATLAB 中的 cell (单元格数组).pdf

    - 储存和操作非固定大小的结构体数组,因为结构体数组的字段必须相同,而元胞数组可以避免这个限制。 - 作为函数的局部工作空间,临时存储不同类型的中间结果。 在实际编程中,熟练掌握元胞数组的创建、访问和...

    二维数组与二重指针(整理)

    在C++中,标准模板库(STL)提供了 `vector` 和 `array` 等容器,它们可以用于实现类似二维数组的功能,并且提供了更加安全和便捷的内存管理。使用这些容器可以避免手动管理内存,从而减少错误的发生。 总结起来,...

    c++/STL容器设计相关

    在C++编程语言中,STL(Standard Template Library,标准模板库)是不可或缺的一部分,它提供了高效、便捷的数据结构和算法。STL容器是STL的核心组成部分,它们为程序员提供了组织和管理数据的方式。本节将深入探讨...

    COleVariant和CByteArray

    CByteArray 是 VC++ 中用来管理字节数组的一个容器类。它非常适合用来存储一系列字节数据,尤其适用于那些需要频繁修改数据的场景。 **构造函数** - `CByteArray`: 创建一个空的字节数组。 **边界相关** - `Get...

    Java学习笔记,容器(集合)

    数组是最基本的容器,可以存储多个对象,但它有很多缺点,如长度必须在初始化时指定,数组采用连续存储空间,删除和添加效率低下,数组无法直接保存映射关系,数组缺乏封装,操作繁琐。因此,我们需要一种更强大、更...

    CArray模板类的应用举例

    CArray模板类是MFC(Microsoft Foundation Classes)库中提供的一种动态数组容器,它为C++程序员提供了方便的数据存储和管理功能。CArray类是基于STL(Standard Template Library)中vector理念设计的,但更加适合...

    Vector创建二维数组.zip

    然而,标准库中的`std::vector`容器提供了一种更加灵活的方式来管理动态的、大小可变的数组,包括二维数组。`std::vector`不仅方便了内存管理,还可以提供额外的功能,如迭代器、容量调整和范围初始化等。本篇将详细...

    基于labview的读取二维数组所有数据源码.zip

    这个过程对于数据分析、图像处理、数值计算等应用具有重要意义,因为在处理这类应用时,往往需要从多个数据源中提取并处理数据,二维数组以其能够存储和管理复杂数据结构的特性,成为这些应用的首选数据容器。...

    matlab相关面试问题.pdf

    - 结构体:可以存储不同类型数据的容器; - 单元数组:可以存储不同类型数据的数组; - 表:类似于结构体,但在某些情况下更易用的数据类型; - 字符串数组:存储文本数据的数组; - 逻辑数据类型:存储逻辑值true或...

    numpy-1.26.4-cp311-cp311-win-amd64.whl

    它的核心功能是提供高效的多维数据容器——numpy数组(也称为ndarray),支持大量的维度数组和矩阵运算,同时为这些数组提供了大量的数学函数库。这使得numpy成为Python科学计算的基石。 numpy数组与Python内置的...

    C语言容器库

    C语言容器库的核心目标是提供一套高效且易于使用的数据结构和算法,包括但不限于数组、链表、队列、栈、哈希表等,帮助开发者更方便地管理数据。例如,`stringlib`可能是一个字符串操作的库,它可能包含了字符串的...

    C++数组vector用法.pdf

    C++中的`std::vector`是一个非常重要的容器类,它被设计用来动态管理一组相同类型的元素,类似于数组。本文将详细介绍`std::vector`的使用方法、优点,并对比MFC中的`CArray`,阐述为什么在C++编程中推荐使用`std::...

    cpp代码-C++ STL之vector动态数组

    在C++编程中,STL(Standard Template Library,标准模板库)是不可或缺的一部分,它提供了一系列高效、便捷的容器和算法。其中,`std::vector`是STL中的一种容器,它代表了一个动态数组,允许程序员进行高效地插入...

    (免费 可直接下载)学生信息管理系统-C++ 容器版本

    在学生信息管理系统中,vector被用来存储学生的基本信息,如姓名、学号、成绩等,使得数据的存取更加灵活和便捷。通过vector的push_back()方法可以添加新学生的信息,而erase()方法则可以删除特定学生的信息,实现了...

    tomcat-redis-session-manager-2.0.0.zip

    7. **集成简单**: `tomcat-redis-session-manager`与Tomcat容器的集成非常便捷,只需要在`context.xml`配置文件中添加相关的Manager配置,即可启用Redis作为Session存储。 在实际应用中,通过`tomcat-redis-session...

    JAVA容器效率深度分析List

    在Java编程中,容器是用于存储对象的集合,它们提供了数据结构和算法,使得我们可以方便地组织和管理数据。本文将深入分析Java中的List接口及其常见的实现类,如ArrayList、LinkedList和Vector,探讨它们的效率差异...

    Laravel开发-secure-headers

    服务提供者是Laravel中的一种组件注册机制,它负责启动、配置和绑定服务到Laravel容器,使得在整个应用程序中可以方便地使用这些服务。 三、如何使用secure-headers 1. 安装:首先,通过Composer安装该软件包,使用...

    王桂林--S T L.pdf

    容器是STL中最基础也是最重要的组成部分之一,它们用于存储不同类型的数据集合。STL中提供了多种容器,包括: - `std::vector`:动态数组。 - `std::list`:双向链表。 - `std::deque`:双端队列。 - `std::set`:...

Global site tag (gtag.js) - Google Analytics