更新时间:2020-10-20 17:53:36 来源:极悦 浏览1176次
数组(Array)是有序的元素序列。在程序中可以使用下标变量,即说明这些变量的整体为数组,数组中的每个变量的数据类型是相同的。当数组中每个元素都只带有一个下标时,称这样的数组为一维数组。一维数组是数组里面最重要的基本组成部分,本文我们就一起来全面解析一下一维数组。
1.一维数组声明方式
方式一
数据类型 数组名[] = null ; //声明一维数组
数组名 = new 数组类型[长度]; // 分配内存给数组
方式二
数据类型[] 数组名 = null ; //声明一维数组
数组名 = new 数组类型[长度]; // 分配内存给数组
简写方式
数据类型 数组名[] = new 数据类型[个数]; //声明数组的同时分配内存
2.一维数组中元素的表示方法
数组的声明以及简单输出
package com.shxt.demo01;
public class ArrayDemo01 {
public static void main(String[] args) {
int[] score = null; //声明数组,但是为开辟内存空间
score = new int[3]; //为数组开辟"堆内存"空间
System.out.println("score[0]="+score[0]); //分别输出数组的每个元素
System.out.println("score[1]="+score[1]); //分别输出数组的每个元素
System.out.println("score[2]="+score[2]); //分别输出数组的每个元素
// 使用循环依次输出数组中的全部内容
for (int i = 0; i < 3; i++) {
System.out.println("score["+i+"]="+score[i]);
}
}
}
对于数组的访问采用"数组名称[索引或者下标]"的方式,索引从0开始计数,假设程序中取出的内容超过了这个下标范围,例如:score[3]程序运行会存在以下的异常错误提示信息:
java.lang.ArrayIndexOutOfBoundsException:3
提示的内容为数组索引超出绑定的异常(经常说的数组越界异常),这个是未来你们初学者经常出现的问题,请引起重视.此外,我们发现以上的程序运行的结果的内容都是"0",这是因为声明的数组是整型数组.
默认初始化数据:数组元素相当于对象的成员变量,默认值跟成员的规则是一样的,重点记忆!
系统将按照如下规则分配初识值:
数组元素的类型是基本类型中的整数类型(byte,short,int和long),则数组元素的值为0
数组元素的类型是基本类型中的浮点类型(float,double),则数组元素的值为0.0
数组元素的类型是基本类型中的字符类型(char),则数组元素的值为'\u0000'(空格)
数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值为false
数组元素的类型是引用数据类型(类,接口和数组),则数组元素的值为null
为数组中的元素赋值并进行输出
声明整型数组,长度为5,通过for循环赋值1,3,5,7,9的数据
package com.shxt.demo01;
public class ArrayDemo02 {
public static void main(String[] args) {
int[] score = null; //声明数组,但是为开辟内存空间
score = new int[5]; //为数组开辟"堆内存"空间
for (int i = 0; i < 5; i++) {
score[i] = i*2+1;
}
for (int i = 0; i < 5; i++) {
System.out.println("score["+i+"]="+score[i]);
}
}
}
数组长度的取得
数组名称.length --> 返回一个int型的数据
package com.shxt.demo01;
public class ArrayDemo03 {
public static void main(String[] args) {
int[] score = new int[5];
System.out.println("数组长度为:"+score.length);
}
}
3. 一维数组的初始化方式
动态初始化
之前练习的就是使用的动态初始化方式
package com.shxt.demo01;
public class ArrayDemo04 {
public static void main(String[] args) {
int[] score = null; //声明数组,但是为开辟内存空间
score = new int[3]; //为数组开辟"堆内存"空间
score[0] = 100;
score[1] = 200;
score[2] = 300;
}
}
静态初始化
数据类型[] 数组名={初始值0,初始值1,...,初始值N}
或者
数据类型[] 数组名 = new 数据类型[]{初始值0,初始值1,...,初始值N}
package com.shxt.demo01;
public class ArrayDemo04 {
public static void main(String[] args) {
int[] score = {10,20,30,40,50};
for (int i = 0; i < score.length; i++) {
System.out.println("score["+i+"]="+score[i]);
}
}
}
4一维数组一定要初始化吗
在之前我们说在使用Java数组之前必须要先初始化数组(即在使用数组之前,必须先创建数组).实际上,如果真正掌握了Java数组中的分配机制,那么可以完全换一个方式来初始化数组.
始终记住:Java的数组变量只是引用类型的变量,它并不是数组对象本身,只是让数组变量指向有效的数组对象,程序中即可使用该数组变量
package com.shxt.demo01;
public class ArrayDemo08 {
public static void main(String[] args) {
// 静态初始化:定义并且初始化nums数组
int nums[] = {13,34,57,100};
// 定义一个scores数组变量
int[] scores;
//让scores数组执行nums所引用的数组
scores = nums ;
// 对scores进行变量
System.out.print("scores数组数据:");
for (int i = 0; i < scores.length; i++) {
System.out.print(scores[i]+"\t");
}
// 将scores数组中第3个元素赋值为200
scores[2] = 200;
// 访问 nums 数组的第3个元素,将看到输出值为200
System.out.println("\nnums 数组的第3个元素,将看到输出值为:"+nums[2]);
}
}
既然数组内容可以进行引用传递,那么就可以把数组作为方法中的参数,而如果一个方法想接收参数,则对应的参数类型必须是数组
使用方法接收数组
package com.shxt.demo01;
public class ArrayDemo09 {
public static void main(String[] args) {
// 静态初始化:定义并且初始化nums数组
int nums[] = {13,34,57,100};
// 引用传递, int[] temp = nums
print(nums);
}
public static void print(int[] temp){
for (int i = 0; i < temp.length; i++) {
System.out.print(temp[i]+"\t");
}
}
}
使用方法修改数组的内容
package com.shxt.demo01;
public class ArrayDemo10 {
public static void main(String[] args) {
// 静态初始化:定义并且初始化nums数组
int nums[] = {1,2,3,4,5};
// 引用传递, int[] temp = nums
inc(nums); //扩容操作
print(nums); //打印内容
}
public static void inc(int[] temp){
for (int i = 0; i < temp.length; i++) {
temp[i]*=2;
}
}
public static void print(int[] temp){
for (int i = 0; i < temp.length; i++) {
System.out.print(temp[i]+"\t");
}
}
}
一维数组是由数字组成的以单纯的排序结构排列的结构单一的数组。一维数组是计算机程序中最基本的数组。二维及多维数组可以看作是一维数组的多次叠加产生的。想要学习数组,一维数组是学习二维及多维数组的基础,本站的Java基础教程里面有最新的教程可供参考学习,为众多Java初学者排忧解难。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习