Java数组的基本学习教程

作者:goldensun 时间:2021-07-14 05:08:00 

Java数组声明、创建、初始化
一维数组的声明方式:


type var[]; 或type[] var;

声明数组时不能指定其长度(数组中元素的个数),

Java中使用关键字new创建数组对象,格式为:


数组名 = new 数组元素的类型 [数组元素的个数]

实例:
TestNew.java:

程序代码:


public class TestNew
{
  public static void main(String args[]) {
    int[] s ;
    int i ;
    s = new int[5] ;
    for(i = 0 ; i < 5 ; i++) {
      s[i] = i ;
    }
    for(i = 4 ; i >= 0 ; i--) {
      System.out.println("" + s[i]) ;
    }
  }  
}

初始化:

1.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;
2.静态初始化:在定义数字的同时就为数组元素分配空间并赋值;
3.默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐士初始化。
实例:


TestD.java(动态):

程序代码:


public class TestD
{
  public static void main(String args[]) {
    int a[] ;
    a = new int[3] ;
    a[0] = 0 ;
    a[1] = 1 ;
    a[2] = 2 ;
    Date days[] ;
    days = new Date[3] ;
    days[0] = new Date(2008,4,5) ;
    days[1] = new Date(2008,2,31) ;
    days[2] = new Date(2008,4,4) ;
  }
}

class Date
{
  int year,month,day ;
  Date(int year ,int month ,int day) {
    this.year = year ;
    this.month = month ;
    this.day = day ;
  }
}

 

TestS.java(静态):

程序代码:


public class TestS  
{  
  public static void main(String args[]) {  
    int a[] = {0,1,2} ;  
    Time times [] = {new Time(19,42,42),new Time(1,23,54),new Time(5,3,2)} ;  
  }  
}  

class Time  
{  
  int hour,min,sec ;  
  Time(int hour ,int min ,int sec) {  
    this.hour = hour ;  
    this.min = min ;  
    this.sec = sec ;  
  }  
}  

TestDefault.java(默认):

程序代码:


public class TestDefault  
{  
  public static void main(String args[]) {  
    int a [] = new int [5] ;  
    System.out.println("" + a[3]) ;  
  }  
}  

JAVA基础之一维数组和多维数组
java语言中,数组是一种最简单的复合数据类型。数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来唯一地确定数组中的元素。数组有一维数组和多维数组。

1.一维数组的定义


type arrayName[ ];

类型(type)可以为Java中任意的数据类型,包括简单类型和复合类型。

例如:


int intArray[ ];  
Date dateArray[];

2.一维数组的初始化

(1) 静态初始化


int intArray[]={1,2,3,4};  
String stringArray[]={"abc", "How", "you"};

(2) 动态初始化

1)简单类型的数组


int intArray[];  
intArray = new
int[5];

2)复合类型的数组


String stringArray[ ];  
String stringArray = new String[3];/*为数组中每个元素开辟引用 空间(32位) */
stringArray[0]= new String("How");//为第一个数组元素开辟空间
stringArray[1]= new String("are");//为第二个数组元素开辟空间
stringArray[2]= new String("you");// 为第三个数组元素开辟空间

3.一维数组元素的引用

数组元素的引用方式为:

arrayName[index]
index为数组下标,它可以为整型常数或表达式,下标从0开始。每个数组都有一个属性length指明它的长度,例如:intArray.length指明数组intArray的长度。

多维数组

Java语言中,多维数组被看作数组的数组。

1.二维数组的定义


type arrayName[ ][ ];  
type [ ][ ]arrayName;

2.二维数组的初始化

(1) 静态初始化


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

Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。

(2) 动态初始化

1) 直接为每一维分配空间,格式如下:


arrayName = new type[arrayLength1][arrayLength2];  
int a[ ][ ] = new int[2][3];

2) 从最高维开始,分别为每一维分配空间:


arrayName = new type[arrayLength1][ ];  
arrayName[0] = new type[arrayLength20];  
arrayName[1] = new type[arrayLength21];  
…  
arrayName[arrayLength1-1] = new type[arrayLength2n];

3) 例: 二维简单数据类型数组的动态初始化如下,


int a[ ][ ] = new int[2][ ];  
a[0] = new int[3];  
a[1] = new int[5];

对二维复合数据类型的数组,必须首先为最高维分配引用空间,然后再顺次为低维分配空间。而且,必须为每个数组元素单独分配空间。

例如:


String s[ ][ ] = new String[2][ ];  
s[0]= new String[2];//为最高维分配引用空间
s[1]= new String[2]; //为最高维分配引用空间
s[0][0]= new String("Good");// 为每个数组元素单独分配空间
s[0][1]= new String("Luck");// 为每个数组元素单独分配空间
s[1][0]= new String("to");// 为每个数组元素单独分配空间
s[1][1]= new String("You");// 为每个数组元素单独分配空间

3.二维数组元素的引用

对二维数组中的每个元素,引用方式为:arrayName[index1][index2]

例如:


num[1][0];

4.二维数组举例:

【例】两个矩阵相乘


public
class MatrixMultiply{  
public
static
void main(String args[]){  
int i,j,k;  
int a[][]=new
int [2][3]; //动态初始化一个二维数组
int b[][]={{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}};//静态初始化

 
一个二维数组  


int c[][]=new
int[2][4]; //动态初始化一个二维数组
for (i=0;i<2;i++)  
for (j=0; j<3 ;j++)  
a[j]=(i+1)*(j+2);  
for (i=0;i<2;i++){  
for (j=0;j<4;j++){  
c[j]=0;  
for(k=0;k<3;k++)  
c[j]+=a[k]*b[k][j];  
}  
}  
System.out.println("*******Matrix C********");//打印Matrix C标记
for(i=0;i<2;i++){  
for (j=0;j<4;j++)  
System.out.println(c[j]+" ");  
System.out.println();  
}  
}  
}
标签:Java,数组
0
投稿

猜你喜欢

  • Java 常量池详解之字符串常量池实现代码

    2022-09-09 22:12:03
  • 详解SpringCloud Ribbon 负载均衡通过服务器名无法连接的神坑

    2021-06-01 07:28:41
  • JFreeChart插件实现的折线图效果实例

    2023-09-21 02:20:03
  • java对象拷贝详解及实例

    2023-01-20 08:27:00
  • List调用toString()方法后,去除两头的中括号实例

    2023-09-28 11:18:56
  • Java经典算法汇总之选择排序(SelectionSort)

    2021-12-23 03:59:52
  • ELK搭建线上日志收集系统

    2021-11-01 17:34:41
  • java 重载(overload)与重写(override)详解及实例

    2021-06-18 15:59:45
  • C#中this指针的用法示例

    2021-07-21 14:12:24
  • java基于包结构的请求路由实现实例分享

    2021-10-23 13:10:18
  • Kafka Producer中的消息缓存模型图解详解

    2022-05-03 06:00:13
  • java开发之MD5加密算法的实现

    2022-05-13 23:44:35
  • java简单坦克大战制作代码

    2023-02-07 05:08:37
  • Springboot - Fat Jar示例详解

    2023-11-19 21:28:35
  • Spring MVC+FastJson+hibernate-validator整合的完整实例教程

    2021-10-31 13:20:13
  • shiro实现单点登录(一个用户同一时刻只能在一个地方登录)

    2022-07-04 01:37:55
  • Spring main方法中如何调用Dao层和Service层的方法

    2023-11-28 23:15:19
  • springboot+thymeleaf 文件上传功能的实现代码

    2023-11-25 05:08:59
  • 教你如何用好 Java 中的枚举

    2022-11-03 10:31:21
  • java 实现迷宫回溯算法示例详解

    2023-12-14 23:52:26
  • asp之家 软件编程 m.aspxhome.com