一维数组(重点)

之前提到的数据类型,java的数据类型分为基本和引用数类型,那么实际上数组就属于引用数据类型,所以,在这里,就首先来观察一下到底什么叫做引用。

1、基本概念

例如:要定义100个整形变量,按照最原始的方式i1、i2、......i100,这样做的话肯定不好管理,所以,这个时候就可以使用数组完成操作了,数据是一组相关的变量集合。

在java中,可以使用如下的语法格式定义一个数组:

数据类型 数组名称[] = new 数据类型[长度];

其中,也可以将以上的语法,变为以下的形式:

数据类型[] 数组名称 = new 数据类型[长度];

只是,个人已经习惯于第一种写法,所以采用那种法师由个人决定。

范例:定义一个整形数组

public class ArrayDemo01

{

           public static void main(String args[])

           {

                     int temp[] = new int[10];               //表示声明了10个数组大小

           }

}

此时,数组已经声明完毕,那么下面就可以使用数组,使用的形式如下:

1)通过“数组名称[下标]”的形式进行访问

2)在进行访问的时候,一定要注意的是,数组下标从0开始,10个大小的数字,下标:0-9

范例:访问数组中第一个、第三个元素

public class ArrayDemo01

{

           public static void main(String args[])

           {

                     int temp[] = new int[10];               //表示声明了10个数组大小

                    System.out.println("第一个元素:" + temp[0]);

                    System.out.println("第三个元素:" + temp[2]);

           }

}

因为现在的都是整形数据,那么其默认的数值都是0,但是在进行要注意数组操作的时候,一定要注意,数组的下标绝对不能超过数组的界限,如果超过规定的界限之后,将出现以下的错误:

ArrayIndexOutOfBoundeException

另外,在数组的操作中,为了方便起见,可以通过“数组length”取得一个数组的长度。

public class ArrayDemo02

{

          public static void main(String args[])

          {

                   int temp[] = new int [10];           //表示声明了10个数组大小

                   System.out.println("数组长度:" +temp length);

                   for (int x=0; x<temp.length;x++)

                   {

                              System.out.println("temp["+x+"] = " +temp[x]");

                    }

          }

}

以上所进行的数组操作中,因为使用了关键字"new",所以在数组使用的时候已经为其开辟好了新的空间。

数组的使用分为两个部分:

1)声明数组,声明数组的时候一般都是栈内存中声明的

2)为数组开辟空间,使用关键字new进行空间的开辟,在栈内存中声明

数组的使用分为两个步骤:

1)声明一个数组:数据类型 数组名称[] = null;               //因为数组是引用数据类型,引用的默认值都是null。

2)开辟数组:数组名称 = new 数据类型[长度];              //使用关键字new完成

public class ArrayDemo03

{

          public static void main(String args[])

          {

                   int temp[] = null;                        //声明一个数组,但是没有开辟空间

                   temp = new int [10];                   //开辟了10个大小的空间

                   System.out.println("数组长度:" +temp length);

                   for (int x=0; x<temp.length;x++)

                   {

                              System.out.println("temp["+x+"] = " +temp[x]");

                    }

          }

}

数组声明的时候,所有的内容都是默认值0,下面想可以声明一个3个元素的数组,之后为数组里的每一个元素设置的内容都是奇数,并通过此程序,观察内存的分配操作。

public class ArrayDemo04

{

         public static void main(String args[])

         {

                  int x [] = null;                             //声明数组

                  x = new int[3];                            //开辟3个大小的空间

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

                  {

                            x[i] = i*2 + 1;                     //设置奇数

                  }

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

                  {

                            System.out.println("x["+ i +"] - " +x[i]);

                  }

         }

}

虽然,现在操作的是数组名称,但是实际上改变的即使对内存中的内容。所以,这样的操作在java中就成为引用数据类型。

如果,现在假设把栈内存空间保存的内容当作一个人的名字,那么堆内存实际上就表示具体的一个人,也就是说实际上在栈中存放的只是一个标记而已。

所以,此时,可以为一个堆内存空间同时设置多个栈的引用。

public class ArrayDemo05

{

         public static void main(String args[])

         {

                  int x [] = null;                             //声明数组

                  x = new int[3];                            //开辟3个大小的空间

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

                  {

                            x[i] = i*2 + 1;                     //设置奇数

                  }

                 int y [] = x;                                    //将x数组的空间给y数组

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

                  {

                            System.out.println("x["+ i +"] - " +x[i]);

                  }

         }

}

之后,由数组y修改堆空间的内容。

public class ArrayDemo06

{

         public static void main(String args[])

         {

                  int x [] = null;                             //声明数组

                  x = new int[3];                            //开辟3个大小的空间

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

                  {

                            x[i] = i*2 + 1;                     //设置奇数

                  }

                 int y [] = x;                                    //将x数组的空间给y数组

                 y [2] = 300;

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

                  {

                            System.out.println("x["+ i +"] - " +x[i]);

                  }

         }

}

输出的时候,发现现在输出的是x,但是x[2]的内容已经改变了。因为x和y指向了同一个空间。那么这样的操作就表示引用数据类型的操作,也可以成为引用传递。

转载于:https://my.oschina.net/u/273709/blog/84926

### C语言中一维数组与数据结构的关系 在一维数组的学习过程中,掌握其基础概念和操作方法是非常重要的。以下是关于C语言中一维数组的关键知识点及其在数据结构中的应用: #### 1. **一维数组的基础** 一维数组是一组相同类型的变量集合,在内存中连续存储。可以通过索引来访问其中的每一个元素[^1]。 ```c #include <stdio.h> int main() { int array[5] = {1, 2, 3, 4, 5}; for (int i = 0; i < 5; i++) { printf("array[%d] = %d\n", i, array[i]); } return 0; } ``` 上述代码展示了如何声明并初始化一个一维数组以及遍历它的过程。 #### 2. **动态分配一维数组** 当数组大小不确定时,可以使用`malloc()`函数来动态分配空间。这在处理大规模数据或实现复杂数据结构(如栈、队列)时尤为重要[^2]。 ```c #include <stdio.h> #include <stdlib.h> int main() { int size = 5; int *arr = (int *)malloc(size * sizeof(int)); if (!arr) { printf("Memory allocation failed!\n"); return -1; } for (int i = 0; i < size; i++) { arr[i] = i + 1; } for (int i = 0; i < size; i++) { printf("arr[%d] = %d\n", i, arr[i]); } free(arr); return 0; } ``` 这段代码演示了一维数组的动态分配及释放的过程。 #### 3. **一维数组的应用场景** - **线性表**:一维数组常用于表示简单的线性表,支持随机访问任意位置的元素。 - **堆栈和队列**:通过设置头尾指针,可以用一维数组模拟堆栈和队列的操作[^3]。 #### 4. **与其他维度数组的区别** 虽然多维数组本质上是由多个一维数组嵌套而成,但在实际编程中需要注意它们之间的转换关系。例如,将二维数组展平为一维数组以便于某些特定运算[^4]。 --- ### 需要复习的C语言基础知识 针对考研需求,建议重点复习以下几个方面: - 数组的概念及其基本操作; - 动态内存管理技术(如`malloc`, `free`等); - 函数参数传递机制特别是涉及指针的情况; - 结构体与联合体的理解及其组合形式下的数组定义方式; 这些内容不仅有助于理解一维数组本身的工作原理,也为后续学习更复杂的高级主题打下坚实基础。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值