• Java中数组的使用


    1.声明数组

    1.1声明一维数组

    声明一维数组有下列两种格式:

    数组的元素类型      数组名字[ ];

    数组的元素类型[ ]   数组名字

    1.2声明二维数组

    声明二维数组有下列两种格式:

    数组的元素类型     数组名字[ ][ ];

    数组的元素类型[ ]   [ ] 数组名字;

    例如:

    float boy[ ];

    char cat[ ][ ];

    Java数组声明注意以下两点内容:

    1.数组的元素类型可以是Java中的任何一种类型(包括自定义类型)。

    2.Java中不允许在声明数组中的方括号内指定数组元素的个数。

    2.创建数组

    声明数组仅仅是给出了数组名字和元素的数据类型,想要真正使用数组还必须为它分配内存空间,即创建数组。

    为数组分配内存空间的格式如下:

    数组名字 = new 数组元素的类型[数组元素的个数];

    例如:

    boy=new float[4];

    数组变量boy中存放着这些内存单元的首地址,该地址被称为数组的引用,这样数组就可以通过索引操作这些内存单元。

    声明数组和创建数组可以一起完成,例如:

    float boy[ ] = new float[4];

    二维数组与一维数组一样,声明之后要为它分配内存空间,例如:

    int boy[ ][ ];

    boy=new int[2][3];

    int boy[ ][ ]=new int[2][3];

    二维数组的创建需要注意以下几点:

    1.一个二维数组是由若干个一维数组构成。

    2.构成二维数组的一维数组不必有相同的长度,在创建二维数组时可以分别指定构成该二维数组的一维数组的长度。例如:

    int a[ ][ ]=new int[3][ ];

    a[0]=new int[6];

    a[1]=new int[12];

    a[2]=new int[8];

    3.Java允许使用int型变量的值指定数组元素的个数。例如:

    int size=30;

    double number[ ]=new double[size];

    3.Java数组的一些便捷操作

     3.1 length的使用

    数组的元素个数称为数组长度。对于一维数组,“数组名字.length”的值就是数组中元素的个数。对于二位数组,“数组名字.length”的值是它含有的一维数组的个数。

    3.2 数组初始化

    创建数组后,系统会给每一个数组元素一个默认的值,例如,float型是0.0。

    在声明数组时同时也可以给数组的元素一个初始值,例如:

    float boy[ ]={21.3f,23.89f,2.0f,778.98f};

    也可以直接用若干个一维数组初始化一个二维数组,这些一维数组的长度不尽相同。

    3.3 数组的引用

    数组属于引用型变量,因此,两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素。引用的指向就是堆空间的前地址。

    3.4 数组的表示格式

    Arrays.toString(a),可以将数组a中的元素以字符串形式输出,例如:

    int [ ]a={1,2,3,4,5,6}

    Arrays.toString(a)得到的字符串是:

    [1,2,3,5,6]

    3.5 数组中的常用方法

    复制数组方法:arraycopy方法、copyOf方法、copyOfRange方法

    排序方法:sort方法

    二分查找方法:binarySearch

    4.实验演示

    代码:

    public class Test {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int num1[]; //声明一维数组 或int[] num1
    		int num2[][];  //声明二维数组 或者 int[][] num2
    		
    		num1=new int[8];        //创建一维数组
    		num2=new int[3][];   //创建二维数组num2[0],num2[1],num2[2]还没对这三个数组分配空间暂时不能使用
    		
    		for(int i=0;i<=5;++i) {  //给一维数组赋值
    			num1[i]=i;
    		}
    		for(int i=0;i<3;++i) {
    			num2[i]=new int[6];  //给二维数组中的每一个数组分配空间
    			for(int j=0;j<6;++j) {
    				num2[i][j]=j*i;   //赋值
    			}
    		}
    		
    		
    		int num3[]=new int[6];
    		for(int i:num3) {  //数组打印方式
    			System.out.print(i+" ");  //创建后默认的数组值为0
    		}
    		System.out.print("
    ");
    		
    		int num4[][]= {{1},{1,2},{1,2,3}};//数组初始化,组成二维数组的一维数组长度可以不同
    		System.out.println(num4[0].length+" "+num4[1].length+" "+num4[2].length);
    		
    		//数组的使用
    		System.out.println(num1.length+" "+num2[0].length);//输出数组的空间长度
    		
    		int a[]= {1,2,3},b[]= {1,2};
    		a=b;  //数组引用的使用,引用的指向就是堆空间的前地址
    		for(int i:a) {
    			System.out.print(i+" ");
    		}
    		System.out.print("
    ");
    		System.out.println(Arrays.toString(b));  //利用Arrays.toString可以将数组内的内容转换成字符串快速输出数组
    		
    		//对于char类型数组输出
    		char ch[]= {'a','b','c','d'};
    		System.out.println(ch);  //输出char数组内的内容
    		System.out.println(""+ch);//输出数组的引用
    		
    		char ch1[]= {'a','b','c','d'};
    		char ch2[]= {'e','f','g'};
    		System.arraycopy(ch2,0,ch1,1,3);//用ch2数组中从下标为0的元素开始的三个元素,覆盖ch1数组中下标为1开始的三个元素
    		System.out.println(ch1);
    		
    		char ch3[]=new char[5];
    		ch3=Arrays.copyOf(ch2, 3);//将ch2数组中从下标为0开始的三个元素,赋值给数组ch3;
    		System.out.println(Arrays.toString(ch3));
    		
    		char ch4[]=new char[5];
    		ch4=Arrays.copyOfRange(ch2,1,3);//将ch2数组中从下标为1开始的2个元素,赋值给数组ch4;
    		System.out.println(Arrays.toString(ch4));
    		
    		int num5[]= {1,7,5,12,34,3,23};
    		Arrays.sort(num5);//将num5中的数字从小到大排序
    		System.out.println(Arrays.toString(num5));
    		
    		int index;
    		index=Arrays.binarySearch(num5,5);//二分查找num5数组中5的位置
    		System.out.println(index);
    				
    	}
    }

    实验结果:

  • 相关阅读:
    形态学操作
    形态学腐蚀膨胀操作
    图像模糊操作
    OpenCV像素操作和图形绘制
    c++中char类型的取值范围
    二叉树基本操作
    剑指27 二叉树的镜像
    剑指26 树的子结构
    剑指24: 反转链表
    剑指22 链表倒数第k个节点
  • 原文地址:https://www.cnblogs.com/lty1661489001/p/11595269.html
Copyright © 2020-2023  润新知