码迷,mamicode.com
首页 > 编程语言 > 详细

Java中的数组

时间:2020-01-25 20:42:29      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:设置   sde   false   des   public   char   case   个数   table   

  数组是由同一类型的对象或者基本数据类型组成,并封装在同一个标识符(数组名称)下的一种数据结构。在Java中,数组是一种引用数据类型,可以看做对象,需要进行初始化,也可以直接赋值给Object对象,调用Object中的所有方法。每个数组中都有一个由public final修饰的成员变量--length,即数组中含有元素的个数,该变量的值必须为0或正整数。

  数组的创建总共有数组的声明、数组的构建、数组的初始化三步,最后才能使用数组。

一.声明数组的引用

  声明数组时可以不指明数组元素的个数,也可以不为数组元素分配内存空间,只要指定数组元素的数据类型和数组名即可,此时是一个空引用。如:

//数组声明有两种形式
//第一种:Type[] arrayName;
int[] intArray;
String[] stringArray

//第二种:Type arrayName[];
int intArray[];
String stringArray[];

  

二.数组的创建

  用关键字new构成数组的创建表达式,表示在创建时动态分配内存空间。此时可以指定数组类型和数组元素的个数,元素个数既可以是常量也可以是变量。基本类型数组的每个元素都是一个基本类型的变量,引用类型数组的每个元素都是元素的引用。如:

//数组创建的基本格式位:arrayName = new Type[componets number];

int[] ai;
ai = new int[10];

String[] s;
s= new String[3]

//可以将数组的声明与创建一并执行
int ai[] = new int[10];

//同时创建多个数组
String[] s1 = new String[3], s2 = new String[8];

  若不初始化数组,数值型数组会自动初始化为0,字符型数组会自动初始化为null,布尔型数组会初始化为false,引用型数组会自动初始化为空引用null。

三.数组元素的初始化

  声明数组名时,给出了数组的初始值,程序变回利用数组初始值创建数组并对它的各个元素进行初始化,如:

int a[] = {22,33,44,55};

  若创建数组时没有指定初始值,数组便会被赋予默认的初始值。

 

四.数组的使用

  数组的引用可以通过数组名加下标来对数组的元素进行访问,即arrayName[index]。其中数组下标必须为byte,int,short或者char,从0开始计数,下标值的最大值为length-1,如果超过最大值,将会产生数组越界异常。

  数组名是一个引用:

 

public class Arrays{

	public static void main(String[] args){
		int[] a1 = {1,2,3,4,5};
		int[] a2;
		a2 = a1;
		for(int i = 0;i < a2.length; i++){
			a2[i]++;
		}
		
		for(int i=0;i < a1.length; i++){
			System.out.println("a1[" + i + "]" + a1[i]);
		}
	}
}
//数组a1和数组a2指向同一个引用,当数组a2中的元素加1时,数组a1中的元素便也加1了。
//输出结果
a1[0] = 2
a1[1] = 3
a1[2] = 4
a1[3] = 5
a1[4] = 6

 

  对于字符串构成的数组,每个字符串都是一个引用。如:

public class ArrayOfStringsDemo{
	public static void main(String[] args){
		String[] anArray={"String One","String Two","String Three"};
		for(int i = 0;i < anArray.length; i++){
			System.out.println(anArray[i].toLowerCase());
		}
	}
}

//运行结果
string one
string two
string three

 

五.复制数组或数组的部分元素

  复制数组用的方法是arraycopy,其格式为

public static void arraycopy(Object source, int srcIndex, Object dest,int destIndex,int length)

  例;

public class ArrayCopyDemo{

	public static void main(String[] args){
		char[] copyFrom = {‘d‘,‘e‘,‘c‘,‘a‘,‘f‘,
				‘f‘,‘e‘,‘i‘,‘n‘,‘a‘,‘t‘,‘e‘,‘d‘};
		char[] copyTo = new char[7];
		System.arraycopy(copyFrom,2,copyTo,0,7);
		System.out.println(new String(copyTo));
	}
}

//输出结果
caffina

 

六.多维数组的创建与使用

  二维数组是数组的数组,其创建方法与一维数组原理相同。如:

//方法一:只声明不初始化
int[][] gradeTable;//gradeTable 是一个指向2维整数数组的引用,其初始值为null
//方法二:声明并初始化
int[][] myArray = new int[3][5];//定义引用时,同时构造数组并初始化引用,初始值为0,设置二维数组大小时,前者必须是不为空的正整数
//方法三:定义引用、构造数组,初始化数组元素
int[][] myArray = {{8,1,2,2,9},{1,9,4,0,3},{0,3,0,0,7}};

  二维数组的长度及每行的长度

class UnevenExample3{
	public static void main(String[] args){
	//声明构造一个二维数组
	int[][] uneven = {{1,9,4},{0,2},{0,1,2,3,4}};
	
	//数组的长度(行数)
	System.out.println("Length of array is :" + uneven.length);
	
	//数组每一行的长度(列数)
	System.out.println("Length of row[0] is :" + uneven[0].length);
	System.out.println("Length of row[1] is :" + uneven[1].length);
	System.out.println("Length of row[2] is :" + uneven[2].length);
	}
}

//运行结果
Length of array is  : 3
Length of row[0] is : 3
Length of row[1] is : 2
Length of row[2] is : 5

 

  

 

Java中的数组

标签:设置   sde   false   des   public   char   case   个数   table   

原文地址:https://www.cnblogs.com/thwyc/p/12233362.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!