05Java数组

数组

数组的基本的定义

数组的定义:数组是最为常见的一种数据结构,同时也是将一些相同类型的数据按照线性顺序连续存储的序列

数组同时也是效率最高的存储和访问元素的方式(利用下标来访问数组内的元素)。

数组在初始化之后长度固定不变,数组内部元素遵循定义的数组类型

package com.sdut.Demo06;

public class Demo01 {
	public static void main(String[] args) {

		/*数组的定义:
		 * 元素类型 [] 数组名;
		 * 元素类型 数组名 [];
		 * 
		 * 数组的初始化:
		 * 元素类型 [] 数组名 = new 元素类型 [数组长度];
		 * 元素类型 数组名 [] = new 元素类型 [数组长度];
		 */

		int arr0[];// 这种定义方法更符合使用习惯
		int[] arr00;// 这种的定义方法更符合原理

		int[] arr = new int[10];
		int arr01[] = new int[10];

		char arr02[] = new char[10];

		String arr03[] = new String[10];
		/*
		 * 基本数据类型和引用数据类型都可以作为数组的元素类型
		 */
	}
}


数组元素的初始值的定义

package com.sdut.Demo06;

public class Demo02 {
	public static void main(String[] args) {

		/*
		 * 数组元素的初始化定义
		 */

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

		int arr02[] = new int[5];

		int arr03[] = { 1, 2, 3, 4, 5 };
		
		String str [] = new String [] {};
		
		
	}
}

数组的默认值

package com.sdut.Demo06;

public class Demo03 {
	public static void main(String[] args) {
		
		int arr01 [] = null;
		int arr02 [] = new int [5];
		int arr03 [] = new int [] {};
		
		String [] arr04 = null;
		String arr05 [] = new String [] {};
		
		Integer arr06 [] = null;
		Integer arr07 [] = new Integer[] {};
		
		System.out.println(arr01);
		System.out.println(arr02);
		System.out.println(arr03);
		System.out.println(arr04);
		System.out.println(arr05);
		System.out.println(arr06);
		System.out.println(arr07);
	}
}

输出结果

null
[I@15db9742
[I@6d06d69c
null
[Ljava.lang.String;@7852e922
null
[Ljava.lang.Integer;@4e25154f

数组在没有进行内存空间的分配时,他是null空的,但是当数组进行new即空间分配后,他里面存的是一个地址。

数组的基本操作以及方法

数组元素的获取,长度的获取,以及遍历数组

package com.sdut.Demo06;

public class Demo04 {
	public static void main(String[] args) {
		/*
		 * 数组元素的获取
		 * 数组长度的获取
		 * 数组内部元素的遍历(利用数组长度获取,利用加强for循环获取)
		 */

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

		// 获取某个数组元素
		System.out.println(arr[3]);// 因为数组下标是从0开始,所以这是获取第四个元素
		// 数组的下标是从0开始,最大的下标为数组长度length - 1

		// 获取数组的长度,利用数组的方法,length方法,这个方法以后还会出现在其他的组成数据中
		System.out.println(arr.length);

		// 遍历数组
		// 1.利用数组长度遍历
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}

		// 2.利用加强for循环
		for (int k : arr) {
			System.out.println(k);
		}

	}
}

数组的倒置

package com.sdut.Demo04;

import java.util.Scanner;

public class Demo01 {

	static Scanner scanner = new Scanner(System.in);

	public static void main(String[] args) {
		int arr[] = new int[5];
		arr = enter();
		invert(arr);
	}

	public static int[] enter() {
		int arr[] = new int[5];

		for (int i = 0; i < arr.length; i++) {
			arr[i] = Integer.parseInt(scanner.nextLine());
		}
		return arr;
	}

	public static void invert(int arr[]) {
		for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
				int taget = arr[i];
				arr[i] = arr[j];
				arr[j] = taget;
		}
		
		for (int i : arr) {
			System.out.print(i + " ");
		}
	}
}

next()与nextLIne()的区别

next()方法在读取内容时,会过滤掉有效字符前面的无效字符,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其过滤掉;只有在读取到有效字符之后,next()方法才将其后的空格键、Tab键或Enter键等视为结束符;所以next()方法不能得到带空格的字符串。
nextLine()方法字面上有扫描一整行的意思,它的结束符只能是Enter键,即nextLine()方法返回的是Enter键之前没有被读取的所有字符,它是可以得到带空格的字符串的。

package com.sdut.Demo04;

public class Demo02 {
	public static void main(String[] args) {

		int a1[] = new int[] { 1, 2, 3, 4 };
		int a2[] = new int[] { 1, 2, 3, 4 };
		int a3[] = a1;
		
		for (int i = 0; i < a1.length; i ++) {
			a3[i]++;
			System.out.println(a1[i] + " " + a2[i] + " " + a3[i]);
		}
	}
}

输出

2 1 2
3 2 3
4 3 4
5 4 5

因为数组为引用类型,所以a3存放的是一个引用地址,所以改变a3,a1也会随之发生改变。

引用传递,值传递

package com.sdut.Demo04;

public class Demo03 {
	public static void main(String[] args) {
		
		int arr[] = new int[] {1,2,3,4};
		int k = 2;
		
		for (int i : arr) {
			System.out.print(i + " ");
		}
		System.out.println();
		System.out.println(k);
		
		f(arr,k);//引用传递,值传递。
		
		for (int i : arr) {
			System.out.print(i + " ");
		}
		System.out.println();
		System.out.println(k);
		
	}
	
	public static void f(int arr[],int k) {
		for (int i = 0; i < arr.length; i ++) {
			arr[i]++;
		}
		k += 5;
	}
}

输出

1 2 3 4
2
2 3 4 5
2

二维数组

数组可以分为一维数组,二维数组,多维数组。

二维数组其实就是excel的表结构,一种行列式结构,二维数组第一个数字代表行,第二个数字代表列。

在Java中,二维数组可以被看作是一个特殊的数组,即一个一维数组,数组的元素又是数组。

package com.sdut.Demo04;

public class Demo04 {
	public static void main(String[] args) {

		// 二维数组的定义
		int[][] arr01;
		int arr02[][];

		// 二维数组的初始化
		int[][] arr03 = new int[2][3];
		int[][] arr04 = new int[][] { { 1, 2, 3 }, { 1, 2, 3 } };
		int[][] arr05 = { { 1, 2, 3 }, { 1, 2, 3 } };

		// 特殊情况的二维数组初始化
		int[][] arr06 = new int[2][];// 不指定每个元素的长度,可以在后面进行赋值
		int[] a1 = arr05[0];// 一个二维数组的元素是一个一维数组
		int[][] arr07 = new int[][] {};// 定义一个空的二维数组,长度为0;

		arr06[0] = new int[] { 1, 2, 3, 4, 5, 6 };
		
		

	}
}

二维数组的遍历,利用循环的嵌套。

package com.sdut.Demo04;public class Demo05 {	public static void main(String[] args) {		int[][] arr = new int[][] { { 1, 2, 3 }, { 1, 2, 3 } };		for (int i = 0; i < arr.length; i++) {//简单的for循环嵌套遍历数组元素			for (int j = 0; j < arr[i].length; j++) {					System.out.print(arr[i][j] + " ");			}		}		System.out.println();		for (int a[] : arr) {//for循环加强型遍历数组元素			for (int i : a) {				System.out.print(i + " ");			}		}			}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值