首页 > 编程语言 > 详细

数组的概念

时间:2018-10-18 00:33:22      阅读:187      评论:0      收藏:0      [点我收藏+]

在前面的定义变量中,只能定义一个。那么定义多个的时候,需要创建的空间不便利。

所以Java中数组便于定义多个变量,进行统一操作。

需求:

定义1000个变量,输出这1000变量的值

没有学过数组,只能使用下列方式实现

Int i1 = 1;

Int i2 = 2;………

System.out.println(i1);

System.out.println(i2);

学过数组后,可使用下列方式

int[] arr = {1,2,3,4.6………};

System.out.println(arr[0]);

数组的概念与好处

数组其实就是一类类型变量的集合,使用数组可以很好的解决相同类型的变量定义问题,还可以统一对数组中的元素进行统一操作

数组的初始化

动态初始化

  1. 定义并初始化数组

a) 数组类型[] 数组名 = new 数组类型[长度];

public class ArrayInit{

public static void main(String[] args){

//a) 数组类型[] 数组名 = new 数组类型[长度];

int[] arr1 = new int[3];//创建数组对象(实例化),并将实例地址赋值给arr1

System.out.println(arr1[0]);

arr1[0] = 123;//通过下标进行赋值操作

System.out.println(arr1[0]);

}

}

b) 数组类型 数组名[] = new 数组类型[长度];

public class ArrayInit{

public static void main(String[] args){

//a) 数组类型[] 数组名 = new 数组类型[长度];

//b) 数组类型 数组名[] = new 数组类型[长度];

int arr1[] = new int[3];

System.out.println(arr1[0]);

arr1[0] = 123;

System.out.println(arr1[0]);

}

}

数组使用时,一定要注意数组越界问题(使用不存在的数组下标造成的)

ArrayIndexOutOfBoundsException

使用数组时,需要定义再赋值,才能使用数组,否则会出现空指针异常的错误

 

public static void main(String[] args){

int[] arr1 = null;

//这里会出现空指针异常,

//原因是在堆中没有实例化数组对象,直接赋值null,也就是没有地址值

//导致arr1变量指向地址是null

arr1[0] = 321;

int[] arr2 = arr1;

arr2[0] = 123;

System.out.println(arr2[0]);//求arr2的值为多少

//结果是123

}

 

 

java.lang.NullPointerException

  1. 数组使用最多的操作是通过for循环进行遍历操作
    1. 读取

public class ArrayInit{

public static void main(String[] args){

int[] arr1 = new int[10];

for(int i = 0; i < arr1.length ; i++){

//通过数组下标访问数组中的元素,

//数组下标根据循环中的i变量进行递增,

//就可以访问数组中的所有元素

System.out.print(arr1[i]+"\t");

}

System.out.println();

}

}

  1. 赋值

public class ArrayInit{

public static void main(String[] args){

int[] arr1 = new int[10];

for(int i = 0; i < arr1.length ; i++){

//通过数组下标进行赋值操作

//数组下标根据循环中的i变量进行递增,

//就可以访问数组中的所有元素,进行赋值

arr1[i] = i;

//输出当前元素的值

System.out.print(arr1[i]+"\t");

}

System.out.println();

}

}

 

数组的数据引用

例子:

 

public static void main(String[] args){

int[] arr1 = new int[10];

arr1[0] = 321;

int[] arr2 = arr1;

arr2[0] = 123;

System.out.println(arr2[0]);//求arr2的值为多少

//结果是123

}

 

 

 

静态初始化

定义数组,并初始化数组元素

数据类型[] 数组名 = {元素数据1, 元素数据2, 元素数据3, 元素数据4,……};

例子:

 

public static void main(String[] args){

//定义了一个数组,并进行初始化操作

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

for(int i = 0 ; i < arr.length ; i++){

System.out.println(arr[i]);

}

}

 

数据类型 数组名[] = new 数据类型[]{元素数据1, 元素数据2, 元素数据3, 元素数据4,……}

例子:

 

public static void main(String[] args){

//定义了一个数组,并进行初始化操作

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

for(int i = 0 ; i < arr.length ; i++){

System.out.println(arr[i]);

}

}

 

以上两种方式,除了写法不同,使用上也有小区别

例子:

错误例子:

public static void main(String[] args){

//定义了一个数组,并进行初始化操作

// Object o = new Object()

// Onject o = null;

// new Object().toString();

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

System.out.println(arr.toString());

System.out.println(arr);

//上面两句是对象信息打印

//普通匿名对象可以直接在后面调用对象方法,

//但是int[] arr = {1,2,3,4,5,6,6,7,4};

//这行代码中地有右部分不行,会报语法错误

System.out.println({1,2,3,4,5,6,6,7,4}.length);

}

正确例子:

public static void main(String[] args){

//定义了一个数组,并进行初始化操作

// Object o = new Object()

// Onject o = null;

// new Object().toString();

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

System.out.println(arr.toString());

System.out.println(arr);

//上面两句是对象信息打印

//普通匿名对象可以直接在后面调用对象方法,

//但是int[] arr = {1,2,3,4,5,6,6,7,4};

//这行代码中地有右部分不行,会报语法错误

System.out.println(new int[]{1,2,3,4,5,6,6,7,4}.length);

}

 

二维数组的介绍与使用

 

//  一维数组可以理解为线,下标可看作是线上的点

//  二位数组可以看作平面,下标可以看作是x,y轴

//  三维数组可以看作是立方,下标可看作是x,y,z

public static void main(String[] args){

//定义二维数组

int[][] arrs = new int[10][20];

//设置二维数组中的值

arrs[0][2] = 11;

arrs[9][11] = 20;

//读取所有的数据

for(int i = 0 ; i < arrs.length ; i++){

System.out.print(i+":[");

for(int j = 0 ; j < arrs[i].length ; j++){

String str = ""+(arrs[i][j]);

if(j!= ( arrs[i].length-1 ) ){// 当前循环次数不是最后一次,就进入并添加‘,‘,否则就进入

str += ",";

}

System.out.print(str);

}

System.out.println("]");

}

}

 

 

 

数组在方法中的使用

  1. 方法形参

public class ArrayMethod{

public static void main(String[] args){

//1.定义一个数组

String[] strs = new String[4];

setArrayValue(strs);

printArrayValue(strs);

 

}

 

////2.将数组批量赋值

public static void setArrayValue(String[] strs){

char c = ‘一‘;

for(int i = 0 ; i < strs.length ; i++){

strs[i] = ""+(char)(c + i);

}

}

 

////3.将数组打印

public static void printArrayValue(String[] strs){

for(int i = 0 ; i < strs.length ; i++){

System.out.println(strs[i]);

}

}

 

/**

public static void main(String[] args){

char c = ‘中‘;

System.out.println((int)c);

System.out.println(c+1);

System.out.println((char)(c+1));

}

**/

}

 

  1. 方法体内

public class ArrayMethodTwo{

public static void main(String[] args){

String[] strs = new String[4];

strs[2] = ""+9;

setArrayValue(strs);

System.out.println(strs[2]);

//此处打印应该是1,因为数组传递是引用传递,

//两个方法操作的是同一个数组对象,

//所以最后打印的是setArrayValue修改过户的值

}

 

public static void setArrayValue(String[] strs){

strs[2] = ""+1;

}

}

 

 

  1. 方法返回值

public class ArrayMethodTwo{

public static void main(String[] args){

String[] strs = new String[4];

strs[2] = ""+9;

String[] strs2 = setArrayValue(strs);

System.out.println(strs2[2]);

//此处打印应该是1,因为数组传递是引用传递,

//两个方法操作的是同一个数组对象,

//所以最后打印的是setArrayValue修改过户的值

 

System.out.println(strs);

System.out.println(strs2);

 

}

 

public static String[] setArrayValue(String[] strs){

strs[2] = ""+1;

return strs;

}

}

 

 

数组的概念

原文:https://www.cnblogs.com/gs520/p/9807574.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!