zoukankan      html  css  js  c++  java
  • Java基础学习(二)—数组

    一、数组的概念

         定义: 数组是存储同一种数据类型的多个元素的集合。

         数组既可以存储基本数据类型,也可以存储引用数据类型。

         格式:

              格式1: 数据类型[] 数组名;

              格式2: 数据类型 数组名[];

         这样定义完了,但是数组中是没有元素的,我们必须对数组进行初始化。

    二、数组的初始化

         Java数组必须先初始化,然后才能使用。所谓的初始化就是为数组的元素分配内存空间,并为每个数组元素赋值。

         动态初始化: 初始化时只指定数组的长度,由系统为数组分配初始值。

         静态初始化: 初始化时指定每个数组元素的初始值,由系统决定数组的长度。

    1.动态初始化

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

         数组长度就是数组元素中的个数。

    		//定义一个int类型数组,这个数组中可以存放3个int类型的值
    		int[] arr = new int[3];

         Java为了提高程序的效率,对数据进行了不同空间的分配,具体划分为5个内存空间,栈(存放的是局部变量)、堆(存放的是所有new出来的东西)、方法区(以后详细讲)、本地方法区(和系统相关)、寄存器(CPU使用)。

         局部变量: 在方法定义中或方法声明上的变量。

    内存图解

              image

    2.静态初始化

         格式: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};

         简化: 数组类型[] 数组名 = {元素1,元素2,...};

    		//定义一个int类型数组,并且存放了三个值5,10,15
    		int[] arr = new int[]{5,10,15};
    		//还可以这样写
    		int[] arr2 = {5,10,15};

    三、一维数组的常见操作

    1.数组的遍历

    	public static void main(String[] args){
    		int[] arr = {1,2,3,4,5};
    		
    		for(int i = 0;i < arr.length;i++){
    			System.out.println(arr[i]);
    		}
    	}

    2.获取数组的最值

    public class ArrayDemo{
    
    	public static void main(String[] args){
    		
    		int[] arr = {33,22,11,55,66,77,10};
    		
    		System.out.println("Max: " + getMax(arr));
    		System.out.println("Min: " + getMin(arr));
    	}
    	
    	//获取数组的最大值
    	public static int getMax(int[] arr){
    		int max = arr[0];
    		
    		for(int i = 0;i < arr.length;i++){
    			max = max > arr[i] ? max : arr[i];
    		}
    		return max;
    	}
    	
    	//获取数组的最小值
    	public static int getMin(int[] arr){
    		int min = arr[0];
    		
    		for(int i = 0;i < arr.length;i++){
    			min = min < arr[i] ? min : arr[i];
    		}
    		return min;
    	}
    }

    3.从Array中创建ArrayList

    		String[] arr = {"a","b","c","d"};
    		ArrayList<String> list = new ArrayList<String>(Arrays.asList(arr));
    		System.out.println(list); //[a, b, c, d]

         为什么要将Array转换成ArrayList呢?可能是因为ArrayList是动态链表,我们可以更方便地对ArrayList进行增删改,我们并不需要循环Array将每一个元素加入到ArrayList中,用以上的代码即可简单实现转换。

    4.检查数组是否包含某一个值

    		String[] arr = {"a","b","c","d"};
    		boolean isContain = Arrays.asList(arr).contains("b");
    		System.out.println(isContain); //true

        先使用Arrays.asList()将Array转换成List<String>,这样就可以用动态链表的contains函数来判断元素是否包含在链表中。

    5.数组的逆序

    public class ArrayDemo{
    
    	public static void main(String[] args){
    		
    		int[] arr = {11,22,33,44,55,66,77};
    		
    		reverse(arr);
    		
    		for(int i = 0;i < arr.length;i++){
    			if( i == arr.length - 1){
    				System.out.print(arr[i]);
    			}
    			else{
    				System.out.print(arr[i] + ",");
    			}
    		}
    		//结果: 77,66,55,44,33,22,11
    	}
    	
    	//数组的逆序
    	public static void reverse(int[] arr){
    		for(int i = 0;i < arr.length / 2;i++){
    			int temp = arr[i];
    			arr[i] = arr[arr.length - 1 - i];
    			arr[arr.length - 1 - i] = temp;
    		}
    	}
    }

    四、二维数组

    1.格式1

        数据类型[][] 变量名 = new 数据类型[m][n];

    注意:

         (1)m表示这个二维数组有多少个一维数组。

         (2)n表示一个一维数组的元素个数。

    内存图解

              image

    2.格式2

         数据类型[][] 变量名 = new 数据类型[][]{ {元素...},{元素...},...,{元素} };

    简化版: 数据类型[][] 变量名 = { {元素...},{元素...},...,{元素} };

    eg: int[][] arr{ {1,2,3},{4,5},{6}};

    image

    五、二维数组的常见操作

    1.二维数组的遍历

    	public static void main(String[] args){
    		
    		int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
    		
    		for(int i = 0;i < arr.length;i++){
    			
    			for(int j = 0;j < arr[i].length;j++){
    				
    				System.out.print(arr[i][j] + " ");
    			}
    			
    			System.out.println();
    		}
    	}

    结果:

         1 2 3
         4 5 6
         7 8 9

  • 相关阅读:
    Cannot run program "/home/mohemi/Program/adt-bundle-linux-x86_64-20130729/sdk//tools/emulator": error=2, 没有那个文件或目录
    在Ubuntu里部署Javaweb环境脑残版
    ios 内存管理 心得
    关于Servlet的PrintWriter 中文乱码问题
    流的对拷
    什么是javaBean
    ios 页面传值4种方式(四) 之通过delegate(代理)
    ios 页面传值4种方式(一) 之全局变量
    Block
    UIView动画学习笔记
  • 原文地址:https://www.cnblogs.com/yangang2013/p/5390413.html
Copyright © 2011-2022 走看看