java中的数组

一、什么是数组?

数组中都是相同数据类型的数据
数组中的数据具有顺序
数组属于复合数据类型

二、一维数组

1.定义一维数组
     格式:数据类型  数组名称[ ]; 或者  数据类型 [ ]数组名称
      数组定义与变量的定义相似,只需要"[ ]"与变量区分,因此上"[ ]"就是数组的标志。
      名称前面/后面出现一个"[ ]"就是一维数组,有两个就是二维数组,两个以上就是多维数组

2.创建一个一维数组
      创建数组的本质就是确定数组的具体存储空间
      格式:
             1.先定义后创建
                        定义:数据类型  数组名称[ ]; 或者  数据类型 [ ]数组名称;
                        创建:数组名称 = new 数据类型[存储的空间];
              2.定义+创建
                        格式:数据类型 数组名称[ ] = new  数据类型[存储的空间];
                                   数据类型 [ ]数组名称 = new  数据类型[存储的空间];

3.如何为一维数组赋值
       1.逐个赋值----就是挨个为数组的每一个存储空间存放数据值。【需要数组的下标】
           数组的下标--因为数组是按照顺序保存数据,此时每一个存储空间就有一个顺序
           格式:数组名称[下标] = 数据值;
           注意:当保存在数组中的数据超过数组指定的存储空间就是会出错
        2.直接赋值---就是在创建数组的时候将数据值保存到数组中
             2.1数据类型  数组名称[ ] = new 数据类型[ ]{数值1,数值2,数值3,,·····,数值n};
                     创建数组的时候不能指定存储空间
             2.2数据类型  [ ]数组名称 = new 数据类型[ ]{数值1,数值2,数值3,,·····,数值n};

4.从一维数组中取值
         只要我们能够得到数组的存储位置,就可以得到数组中的数据值
         格式:数组名称[下标];

5.一维数组的length属性
        如果数组通过直接赋值的方式创建,那么length属性就表示元素个数。
        如果数组通过定义创建的方式创建,那么length属性就表示创建数组时给出的空间大小,与数组 的元素个数无关。

6.循环遍历一维数组
        for循环、while、do``while、for增强遍历
例如:

public class ArrayDemo{
	public static void main(String args[]){
		//一维数组
		/*
		如何创建一个一维数组?
      		创建数组的本质就是确定数组的具体存储空间
      		格式:
             1.先定义后创建
                 定义:数据类型  数组名称[ ]; 或者  数据类型 [ ]数组名称;
	           创建:数组名称 = new 数据类型[存储的空间];
              2.定义+创建
                 格式:数据类型 数组名称[ ] = new  数据类型[存储的空间];
                 数据类型 [ ]数组名称 = new  数据类型[存储的空间];
		*/
		//先定义后创建
		int arr1[];
		arr1=new int[3];
		//定义+创建
		int arr2[] =new int[4];//int []arr2=new int[4];
		/*
		如何给一维数组赋值?
    1.逐个赋值----就是挨个为数组的每一个存储空间存放数据值。【需要数组的下标】
     	数组的下标--因为数组是按照顺序保存数据,此时每一个存储空间就有一个顺序
       格式:数组名称[下标] = 数据值;
       注意:当保存在数组中的数据超过数组指定的存储空间就是会出错
    2.直接赋值---就是在创建数组的时候将数据值保存到数组中
        2.1数据类型  数组名称[ ] = new 数据类型[ ]{数值1,数值2,数值3,·,数值n};
             创建数组的时候不能指定存储空间
        2.2数据类型  [ ]数组名称 = new 数据类型[ ]{数值1,数值2,数值3,,·····,数值n};
	*/
		//逐个赋值
		arr1[0]=1;
		arr1[1]=2;
		arr1[2]=3;
		//直接赋值
		String arrcha[]=new String[]{"fxt","ch","htt","gyq"};
		
		/*
		   一维数组中取值
         	  只要我们能够得到数组的存储位置,就可以得到数组中的数据值
               格式:数组名称[下标];
		*/
		System.out.println("arrcha[1]="+arrcha[1]);//arrcha[1]=ch
		
		/*
		  一维数组的length属性
        如果数组通过直接赋值的方式创建,那么length属性就表示元素个数。
        如果数组通过定义创建的方式创建,那么length属性就表示创建数组时给出的空	间大小,与数组的元素个数无关。
		*/
		//数组通过直接赋值时的length
		System.out.println("arrcha的length="+arrcha.length);//4
		//数组通过定义创建的方式创建
		double douarr[]=new double [3];
		douarr[0]=12.5;
		System.out.println("douarr的length="+douarr.length);//3
		
		//循环遍历一维数组
		String arrcha1[]=new String[]{"fxt","ch","htt"};
		//for循环遍历
		for(int i=0;i<arrcha1.length;i++){
			System.out.println("for--"+arrcha1[i]);
		}
		//while循环
		int j=0;
		while(j<arrcha1.length){
			System.out.println("while--"+arrcha1[j]);
			j++;
		}
		//do{}while();循环
		int k=0;
		do{
			System.out.println("do{}while()--"+arrcha1[k]);
			k++;
		}while(k<arrcha1.length);
		//增强for循环
		for( String name : arrcha1){
			System.out.println("增强for循环--"+name);

		}
	}
}

三、 二维数组

1.如何创建一个二维数组?    
二维数组可以保存一个类似表格一样的数据,所以我们可以认为二维数组就是一个表格。    
      1.先定义,后创建
           数据类型  数组名称[][];
           数据类型  [][]数组名称;
           数组名称=new 数据类型[表格行][行中的列];
       2.定义+创建
           数据类型  数组名称[][] = new 数据类型[表格行][行中的列];
           数据类型  [][]数组名称 = new 数据类型[表格行][行中的列];

2..如何为二维数组赋值?
         1.逐个赋值---就是挨个为数组的每一个存储空间存放数据值。
         2.直接赋值---就是在创建数组的时候将数据值保存到数组中。

3.如何从二维数组中取值?
        只要我们能够得到数组的存储位置,就可以得到数组中的数据值。
        格式:数组名称[行][列];

4..二维数组的length属性 -- 行数
        格式:数组名称.length;

 5..循环遍历二维数组---使用双层循环结构,外层控制行,内层控制列
例如:

public class Array2Demo{
	public static void main(String args[]){
		//二维数组
		//二维数组可以保存一个类似表格一样的数据,所以我们可以认为二维
		//数组就是一个表格
		/*
		  创建一个二维数组
		1.先定义,后创建
   		    数据类型  数组名称[][];
   		    数据类型  [][]数组名称;
   		数组名称=new 数据类型[表格行][行中的列];
		2.定义+创建
   		    数据类型  数组名称[][] = new 数据类型[表格行][行中的列];
   		    数据类型  [][]数组名称 = new 数据类型[表格行][行中的列];
		*/
		//.先定义,后创建
		int arr1[][];
		arr1=new int[2][3];	
		//定义+创建
		int arr2[][]=new int[2][3];//int [][]arr2=new int[2][3];	
		
		/*
		  二维数组赋值
		1.逐个赋值---就是挨个为数组的每一个存储空间存放数据值。
		2.直接赋值---就是在创建数组的时候将数据值保存到数组中。
		    2.1数据类型  数组名称[][]=new 数据类型[][]{
				{数据值1,数据值2,......数据n},
				{数据值1,数据值2,......数据n}};
		    2.2数据类型  数组名称[]={
				{数据值1,数据值2,...数据n},
				{数据值1,数据值2,...数据n}};
		*/
		//逐个赋值
		arr1[0][0]=1;
		arr1[0][1]=2;
		arr1[0][2]=3;
		arr1[1][0]=4;
		arr1[1][1]=5;
		arr1[1][2]=6;
		//直接赋值
		int arr4[][] = {{1,2,3},{4,5,6}};	
	
		/*
		 二维数组中取值
		只要我们能够得到数组的存储位置,就可以得到数组中的数据值。
		格式:数组名称[行][列];
		*/
		System.out.println("arr4[1][1]="+arr4[1][1]);

		/*
		  二维数组的length属性 -- 行数
		格式:数组名称.length
		*/
		System.out.println("arr4.length="+arr4.length);//2

		//循环遍历二维数组---使用双层循环结构,外层控制行,内层控制列
		//for循环遍历
		for(int i=0;i<arr4.length;i++){
		    for(int j=0;j<3;j++){
		     System.out.println("for循环--arr4["+i+"]["+j+"]="+arr4[i][j]);
		    }
		}
		//while
		int k=0;
		while(k<arr4.length){
			int o=0;
			while(o<3){
			  System.out.println("while循环--arr4["+k+"]["+o+"]="+arr4[k][o]);
			  o++;
			}
			k++;
		}
		//增强for循环
		for(int intarr[] : arr4){
			for(int num : intarr){
				System.out.println("增强for循环--"+num);
			}
		}
	}
}

四、认识Arrays类【数组的帮助类】

        Arrays类位于java.util包中,主要包含了操纵数组的各种方法
        Arrays常用函数(都是静态的)
        1.void Array.sort(Object[] array) 对数组按照升序排序
        2.void Array.sort(Object[] array, int from, int to) 
        对数组元素指定范围进行排序(排序范围是从元素下标为from,到下标为to-1的元素进行排序)
        3.Arrays.fill(Object[] array,Object object)可以为数组元素填充相同的值
        4.Arrays.fill(Object[] array,int from,int to,Object object)对数组的部分元素填充一个            值,从起始位置到结束位置,取头不取尾
        5.Arrays.toString(Object[] array)返回数组的字符串形式
例如:

import java.util.Arrays;
public class ArraysDemo{
	public static void main(String args[]){
		//创建一个数组
		int arr[][] = {{3,1,2},{6,8,9}};
		for(int arr1[] : arr){
			Arrays.sort(arr1);
			for(int num : arr1){
				System.out.println("Arrays---"+num);
			}
		}
	}
}

五、数据的内存结构

1.在数据内存结构有区别
     内存分为栈区和堆区
    基本数据类型:只能在栈区区保存数据
    复合数据类型:在内存的栈区和堆区都有数据,只不过栈区保存的是数据的存储位置,真正的数据在推去存放。
2.在计算机执行时的速度
    由于计算机在执行时总是先从内存栈区获取数据,而复合数据在栈区获得的是数据的位置要再去堆区再能拿到数据。
    因此基本数据类型的执行速度比复合数据类型快。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值